注意:有序数组;原地删除重复出现的元素;返回删除后数组的新长度
1.顺序数组
2.原地删除即不可以通过将数组赋值给set(set不允许重复项)来简易去除重复项
3.返回数组的新长度,不要求返回新数组

方法:双指针法

  1. int[] nums = {0,1,2,2,3,3,4}
  2. public int removeDuplicates(int[] nums){
  3. if(nums.length == 0){
  4. return 0;
  5. }
  6. int i = 0;//在前的慢指针
  7. for(int j = 1; j<nums.length; j++){//在后的快指针
  8. if(nums[j] != nums[i]){//一前一后不相同时,后者赋值给前者
  9. //一前一后相同时,后者继续往前走,前者留步
  10. i++;//慢指针向前移动
  11. nums[i] = nums[j];//不相同时,将快指针赋值给慢指针
  12. }
  13. //结果就是相同的会被忽略掉,不相同的会被重新整合
  14. }
  15. return i+1;//此处+1是因为i开始值为0,求长度则应该+1
  16. }