leetcode-26. 删除有序数组中的重复项
删除有序数组中的重复项跟上个题很像。同样是双指针解法
设置快慢指针f,s
初始时s=0,f=1。
如果nums[s]不等于nums[f]说明不重复,f++,s++。
如果nums[s]等于nums[f]说明重复,f++。
替换操作nums[++s]=nums[f++],可以合并到第1步。
12345678910111213class Solution {public: int removeDuplicates(vector<int>& nums) { int s=0; int n=nums.size(); for(int f=1;f<n;f++){ if(nums[f]-nums[s]){ nums[++s]=nums[f]; } } return s+1; }};
做完下一道题后重新写这 ...
leetcode-27. 移除元素
移除元素12345给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
方法1遍历数组,找到元素val。
val之后的元素全部左移
12345678910111213141516class Solution {public: int removeElement(vector<int>& nums, int val) { int n=nums.size(); int i=0; while(i<n){ if(nums[i]!=val) i++; else{ for(int j=i;j<n-1;j++) nums[j]=nums[j+1]; ...