二分查找
随想录的文章链接
programmercarl.com/0704.%E4%BA…
看完代码随想录之后的想法
二分查找作为经典的算法题,工作中也会用到。之前没想过关于左闭右闭,左闭右开的问题,一直都是用的左闭右闭。看完文章后,这里还是有点小收获的。
自己实现过程中遇到哪些困难
没碰到困难。
今日收获,记录一下自己的学习时长
文章10分钟,写代码5分钟。
public static int binarySearch(List<Integer> array, int target) {
if (array == null || array.size() == 0) {
return -1;
}
int left = 0, right = array.size() - 1;
while (left <= right) {
int middle = left + ((right - left) >> 1);
if (array.get(middle) > target) {
right = middle - 1;
} else if (array.get(middle) < target) {
left = middle + 1;
} else {
return middle;
}
}
return -1;
}
移除元素
随想录的文章链接
programmercarl.com/0027.%E7%A7…
看完代码随想录之后的想法
双指针写起来有点复杂,容易出错,复制的次数也较高。题目要求可以改变数组元素的顺序,所以在移除元素时,可以把最后一个元素拷贝到当前元素。
自己实现过程中遇到哪些困难
没碰到困难。
今日收获,记录一下自己的学习时长
文章10分钟,写代码5分钟。
if (nums == null || nums.length == 0) {
return 0;
}
int size = nums.length;
int i = 0;
while (i < size) {
if (nums[i] == val) {
nums[i] = nums[size - 1];
size--;
} else {
i++;
}
}
return size;