704.二分查找
第一次写如图;
体会:1.注意区间:合法区间,区间开闭可以带入相同的数字如【1,1】来判断。
2.while循环判断数组左右边界点后在if里面条件赋值。
第二次如图:还是没有搞清楚区间的问题,深入理解,还有数组索引和数组元素搞混了,注意再注意!
27.移除元素
第一次写:
class Solution {
public int removeElement(int[] nums, int val) {
int i = 0 ,j = 0;
while(nums[i] == val){
nums[i] = nums[i+1];
j += 1;
}
return j;
}
}感觉是符合题目要求返回新数组的长度的,但是我发现好像这个while只循环了一次。所以我又在while外面加上了一个for循环,但是报错超出长度了。我又将while循环除去,把循环体放在for里面,还是报错。
如何将数组的后一个元素前移到前一个元素的位置上?nums[i] = nums[i+1];会突破数组界限。
看完讲解视频:双指针解法完全避开了我的疑惑,不会出现数组越界的错误,用慢指针拟出现一个新数组,用快指针传递原数组非删除元素。妙!
看完讲解一次性通过。