题解 | #草原上的牛群#
草原上的牛群
https://www.nowcoder.com/practice/0661aa40ac8e48f4906df7aa24c3db90
知识点:
双指针/数组
分析:
[1, 1, 3, 3, 5, 6]
设置两个指针 i,j 指向第一个数,下标为0的数,开始遍历:
1.当i==0时,做特殊处理,因为前后比较((i)和(i-1))的时候不能 0 - 1 = -1 会发生段错误,此时nums[j ++] = nums[i];
2.当nums[i] != nums[i-1]的时候,nums[j ++] = nums[i];
以此来更新数组,返回j ,则是新数组的下标。
编程语言:
C++
完整代码:
int remove_duplicates(vector<int>& nums) { int i = 0; int j = 0; while(i < nums.size()){ if(i == 0 || nums[i] != nums[i - 1]){ nums[j++] = nums[i]; } i++; } return j; }