代码随想录day2 || 数组2
27. 移除元素题目链接状态:一遍过思路:直接遍历一遍,若不等则改变
12345678910class Solution {public: int removeElement(vector<int>& nums, int val) { int k = 0, n = nums.size(); for (int i = 0; i < n; i++) if (nums[i] != val) nums[k++] = nums[i]; return k; }};
小结:此方法为双指针法或快慢指针法
26. 删除有序数组中的重复项题目链接状态:有思路但错了很多次错误原因:下标范围错误,因为要考虑第一个元素的问题,判断错误
1234567891011121314151617class Solution {public: int removeDuplicates(vector<int>& nums ...
代码随想录day1 || 数组1
704. 二分查找题目链接
状态:一遍过思路:基本功
35. 搜索插入位置题目链接状态:有思路且三遍过思路:注意是升序,分两种情况:
数组中有该元素 = 二分查找
数组中没有该元素 = 查找失败后情况为: $left>right$ left向右超过right,说明nums[right]<target,right+1=left=n right向左超过left,说明位置在开头nums[left ]<target,right+1=left=n
答案思路:考虑所有情况:
// 分别处理如下四种情况 // 目标值在数组所有元素之前 [0, -1] // 目标值等于数组中某一个元素 return middle; // 目标值插入数组中的位置 [left, right],return right + 1 // 目标值在数组所有元素之后的情况 [left, right], 因为是右闭区间, 所以 return right + 1
暴力解法:
12345678910111213141516class ...