欠下的,迟早是要还的
写 blog 的目的,不仅仅是记录,也不仅仅是分享,但是一定不要坑自己,这不昨晚装逼失败,翻车了,赶上这个金三银四,不知道大家有没有上车/上岸啊。。。
博主好久好久以前啊,写了一篇 blog 专坑自己的,而且啊 评论区 也有好心人提醒啊,可是博主由于某些原因啊,并没有及时更新,所以说今天这个局面,惨不忍睹。
事情的经过是昨晚:对面字节某佬闲聊不是,就聊到了 blog 上,说那好你把你 blog 地址发下,于是乎 大佬 直接 从我这个 blog 出了一道题,直接说你 blog 里面有,沃尼玛,我都记不清哪一篇了,时间太久了,他竟然能找到,针不愧是大佬啊,吐槽归吐槽,咱也不怂,不是说菜就害怕,没什么可怕的,写不出来嘛就写不出来,咱也不是啥都会,得认清看清自己不是,今天这个上午啊,我就翻箱倒柜,终于让我给找到了,竟然真的有一篇,专坑 粉丝 (主要是坑自己),踏马的栽在自己手里了,好比刘姥姥进大观园,我还是头一回。
山不转水转,及时查漏补缺,亡羊补牢,为时未晚。
其实都懂,形式主义,尼玛的外包都干的啥活,谁都心如明镜似的,但是流程还是要走的。


老子也不是吓大的,稳如老狗,写不出来就如实说呗,我又不是干 Java 开发的。
不过话又说回来,这说明博主内功不深厚啊,有漏洞啊,bug 出在了自己身上,俗话说"打铁还需自身硬"
赶紧补上吧,好在现在有 AI ,这太方便
如果你要是问我为什么 面试的时候没用 AI,这 有这个必要么,而且对面也不是傻子,笔记本视频+屏幕共享,主要是这也是考察你,咱们做 码农这一行,面试如考试,珍惜每一次机会,最好是真实发挥自己的水平,即便你能手写出来,也不能说明你的项目能力,你的真实水平,只是片面的第一印象,仅此而已。
我们复盘总结,可以使用 AI

不是给 千问打广告,而是最近在用,确实写代码也还可以,那就试试
有一说一,看到没,人家都知道 AB 两种策略,迭代法和递归法。
那么如果你只是写个暴力解法,对面老六肯定会问你还有没有别的解法,如果你回答了其中一种,必然还会再问你还有没有其他解法。
当然了,你们如果有更好的解法,欢迎评论区留言,或者留下你们的 URL,我必然会 review,立下这个 flag 了,我说的。
好,直接上代码(注释也很齐全,一看就懂啊)
public class BinarySearch {
/**
* 方法一:迭代法实现二分查找
*
* @param arr 已排序的整数数组(升序)
* @param target 要查找的目标值
* @return 目标值的索引,如果未找到则返回 -1
*/
public static int binarySearchIterative(int[] arr, int target) {
if (arr == null || arr.length == 0) {
return -1;
}
int left = 0;
int right = arr.length - 1;
while (left <= right) {
// 防止 (left + right) 可能导致的整数溢出,推荐使用这种写法
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid; // 找到目标,返回索引
} else if (arr[mid] < target) {
left = mid + 1; // 目标在右半部分
} else {
right = mid - 1; // 目标在左半部分
}
}
return -1; // 未找到
}
/**
* 方法二:递归法实现二分查找
*
* @param arr 已排序的整数数组
* @param target 要查找的目标值
* @return 目标值的索引,如果未找到则返回 -1
*/
public static int binarySearchRecursive(int[] arr, int target) {
if (arr == null || arr.length == 0) {
return -1;
}
return searchHelper(arr, target, 0, arr.length - 1);
}
private static int searchHelper(int[] arr, int target, int left, int right) {
if (left > right) {
return -1; // 递归终止条件:范围为空
}
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
return searchHelper(arr, target, mid + 1, right);
} else {
return searchHelper(arr, target, left, mid - 1);
}
}
// 测试主函数
public static void main(String[] args) {
int[] sortedArray = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
int target = 7;
int targetNotFound = 8;
// 测试迭代法
int indexIterative = binarySearchIterative(sortedArray, target);
System.out.println("迭代法 - 查找 " + target + ": 索引为 " + indexIterative);
int indexNotFoundIterative = binarySearchIterative(sortedArray, targetNotFound);
System.out.println("迭代法 - 查找 " + targetNotFound + ": 索引为 " + indexNotFoundIterative);
// 测试递归法
int indexRecursive = binarySearchRecursive(sortedArray, target);
System.out.println("递归法 - 查找 " + target + ": 索引为 " + indexRecursive);
// 边界测试:查找第一个和最后一个元素
System.out.println("查找第一个元素 (1): " + binarySearchIterative(sortedArray, 1));
System.out.println("查找最后一个元素 (19): " + binarySearchIterative(sortedArray, 19));
}
}
这还有分析


总之,不要坑自己,写 blog 的目的,是为了知识树技术栈积累,也是为了分享帮助他人,这是我写 blog 的一个初衷吧。
我也不知道能坚持到何时,但是有时间我就会更新。
有些经验就没分享,以后我会补上。
好了,我们下期见咯,拜拜!