1.题目地址
https://leetcode.cn/problems/remove-duplicates-from-sorted-array/
2.代码结果:
public class LeetCode22 {
public static void main(String[] args) {
int[] nums = {1,2,3,4,5,6};
Solution solution = new Solution();
int i = solution.removeDupicates(nums);
System.out.println(i);
for (int j = 0; j < i; j++) {
System.out.print(nums[j] + " ");
}
}
}
class Solution {
public int removeDupicates(int[] nums){
int k = 0;//k用来保存修改之后的数组长度
//注意两个下标的开始位置
// k一开始就在i的后面一个位置
for (int i = 1; i < nums.length;) {
//思路:
//找到不相同的数值,就准备要将元素移动位置
//1.判断出两个索引位置的元素不一样
//2.先将k的位置移到后一位
//3.将i位置的元素复制给位置
//4.复制完毕之后,就将i的下标向后一位
if (nums[i] != nums[k]){
//2.先将k的位置移到后一位
k++;
//3.将i位置的元素复制给位置
nums[k] = nums[i];
//4.复制完毕之后,就将i的下标向后一位
i++;
} else {
// 这一句表示找到的元素相同,直接将i下标向后找
i++;
}
}
// 因为数组下标是从0开始的,返回的数组长度要加1
return k+1;
}
}