leetcode刷题笔记_数组_删除排序数组重复项(java)
public class removeDuplicates {
public static void main(String[] args) {
removeDuplicates removeDuplicates=new removeDuplicates();
int[] nums = new int[]{1,1,1,1,2,3,3};
int len = removeDuplicates.removeDupli(nums);
for (int i = 0; i <len ; i++) {
System.out.print(nums[i]);
}
System.out.println();
System.out.println(len);
}
public int removeDupli(int[] nums){
if(null == nums || nums.length <= 0) return 0;
int len= 0;
for (int i = 1; i < nums.length; i++) {
//最后数组的长度其实就是数组中有多少个不同的数字而已,所以一旦不同就进入逻辑
//逻辑就是将不同的那个nums[i]赋值给num[count+1],此时nums数组就有了count+2个数字
if(nums[len] != nums[i]) {
nums[len+1] = nums[i];
len++;
}
}
//由于count是从0开始的,在循环里++后是从一开始,但是,实际上 不相同就是两个数了,所以,在最后需要再加上一次
len++;
return len;
}
}
结题思路:
1、本题主要是要明白,最后所得数组的长度即不同数字的个数,
2、在打印数组的不同数字元素的时候,就要将不同数字按照顺序一个个排列,如[1,1,1,1,2,2]就是将[1,2]两个不同的元素排列出来,长度正好是len+2。
3、当发现不同元素的时候就需要将nums[len+1]即第二个元素用nums[i]即那个不同的元素替代,就成了[1,2],相同数字则继续进行循环即可。