● 今日学习的文章链接,或者视频链接
● 自己看到题目的第一想法
● 看完代码随想录之后的想法
● 自己实现过程中遇到哪些困难
● 今日收获,记录一下自己的学习时长
第一天任务
704. 二分查找
class Solution {
public int search(int[] nums, int target) {
int length = nums.length;
int low = 0;
int high = length - 1;
while (low <= high) {
int mid = (high - low) / 2 + low;
final int midVal = nums[mid];
if (target == midVal) {
return mid;
}
if (target < midVal) {
high = mid - 1;
}else {
low = mid + 1;
}
}
return -1;
}
}
27. 移除元素
看着挺简单的题,还是试了好几次...
初步想法是左边一个指针,右边一个指针。
class Solution {
public int removeElement(int[] nums, int val) {
final int length = nums.length;
int count = 0;
if (length == 1) {
return nums[0] == val ? 0 : 1;
}
int x = 0;
int y = length - 1;
while (x <= y) {
// 从左侧找相等的
while (x <= y) {
int xVal = nums[x];
if (xVal == val) {
count++;
break;
}
x++;
}
// 从右侧找不等的
while (x < y) {
int yVal = nums[y];
if (yVal != val) {
break;
} else {
count++;
}
y--;
}
if (x < y) {
int temp = nums[y];
nums[y] = nums[x];
nums[x] = temp;
}
x++;
y--;
}
return length - count;
}
}