题目链接 思路 要求不使用额外的空间;并且要把不重复的数字放置再数组的前面已知数组是升序的,重复的数据必定是相邻的定义两个指针i,j;i是放置不重复元素的指针;j是对nums进行循环的指针对nums进行循环 如果下标i的元素与下标j的元素相等;只移动j如果下标i的元素与下标j的元素不等;i和j都要移动 如果j-i大于1,说明两个元素之间有重复元素;将下标j的元素赋值给下标i+1 java public int removeDuplicates(int[] nums) { if (nums == null || nums.length == 0) { return 0; } int i = 0; int j = 1; while (j < nums.length) { if (nums[i] == nums[j]) { j++; continue; } if (j - i > 1) { nums[i + 1] = nums[j]; } i++; j++; } return i + 1; } go func removeDuplicates(nums []int) int { if nums == nil || len(nums) == 0 { return 0 } i, j := 0, 1 for j < len(nums) { if nums[i] == nums[j] { j++ continue } if j-i > 0 { nums[i+1] = nums[j] } i++ j++ } return i + 1 }