今天是补第一天进度的第二天,进度安排先放最前面,明天补两题,周末追上进度并且看看能不能多做点。
ok,进入正题
一.第一想法
吸取昨天的教训,先把题目仔细读了一遍,三个细节:
1) 原地移除;
2)O(1);
3)顺序可变;
由于刷过这题,有影响是快慢指针,但是暴力解法要培养所以先进行了暴力解,
暴力解法很简单,就是双for循环,用if判断是否 == val;再进行删除,关键在于数组的删除操作是覆盖,数组的元素内存地址是连续的,不可单独删除,只可覆盖,
if(nums[i] == val){
for(int j = i + 1 ; j<size ; j++){
nums[j-1] = nums[j];//这里的覆盖
}
i--;//i--也很关键,因为外++ 内-- 保证还在这
size--;}
二.看完代码随想录
把快慢指针熟悉了一下,关键在于
nums[slowIndex++] = nums[fastIndex];
两个作用,一是slow指针前进,二是起到nums[j-1] =nums[j];的覆盖作用。
但是由于时间问题,双指针方法还没看。周末需要补上。
三.收获
熟悉了数组的删除,快慢指针方法。