鱼C论坛

 找回密码
 立即注册
查看: 2922|回复: 0

[作品展示] Java-之超详细删除排序数组中的重复项问题解决-双指针法

[复制链接]
发表于 2021-5-5 17:43:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 肖-肖 于 2021-5-5 17:45 编辑

代码如下:
  1. /**          删除排序数组中的重复项
  2. *一个有序数组 nums,原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。
  3. *注意点: 数组是有序的、是原地删除不能通过增加额外的空间来实现这个功能、
  4. *不能使用额外的数组空间,必须再原地修改输入数组并在使用O(1)额外空间的条件下完成。
  5. *例: 输入:[0,1,2,2,3,3,4]
  6. *    输出:5
  7. *    重点考察:双指针算法
  8. */   
  9. public class SortedArrayDuplicates {

  10.         public static void main(String[] args) {
  11.                 // TODO Auto-generated method stub
  12.                 System.out.println(removeDuplicates(new int[]{0,1,2,2,3,3,4}));
  13.                
  14.         }
  15.         //去除重复元素的方法 - 参数传入数组
  16.         public static int removeDuplicates(int[] nums){
  17.                 //先对传进来的数组的长度进行校验
  18.                 if(nums.length == 0){
  19.                         return 0;
  20.                 }
  21.                 //下面写双指针-分别为i(慢指针因为它从0开始)、j(快指针因为它从1开始)
  22.                 int i = 0;
  23.                 for(int j = 1;j<nums.length;j++){
  24.                         //如果不相等的话就赋值
  25.                         if(nums[j] != nums[i]){
  26.                                 i++;//nums[j] != nums[i]-》i指针往后走 其实判断完这个ifj也会++的,j始终最少要比i快1 也就是如果这两个值不相等的话i和j一起往后移
  27.                                 nums[i] = nums[j];//把不相等的这个元素(快指针指向的元素)赋值给慢指针加1后指向的元素 这幸亏是有序的如果不是有序的那肯定不行啊
  28.                         }
  29.                         //如果这两个不相等就不会进入if内部
  30.                         //如果相等的话也没必要i++因为相等不算是不一样的元素个数 就不管 i++快指针走就行
  31.                        
  32.                 }
  33.                 return i+1;//i就是不重复数组的最后一个下标、长度的话需要加1
  34.         }

  35. }
复制代码

运行结果
  1. 5
复制代码

提示:
可以在代码的第27行打断点进行debug,更有助于理解
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-25 18:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表