public class RemoveDuplicates {
public static int removeDuplicates(int[] nums) {
int i=0;
int j=0;
for(i=0;i<nums.length-1;i++){
if (nums[i+1]==nums[i])
continue;
else
nums[++j]=nums[i+1]; //式1
// nums[j++]=nums[i+1]; //式2
}
for(int k=0;k<nums.length;k++){
System.out.println("nums="+nums[k]);
}
return j+1;
}
public static void main(String[] args) {
int[] arrays = { 1, 1, 2 };
int length=removeDuplicates(arrays);
System.out.println("length="+length);
}
public static int removeDuplicates(int[] nums) {
int i=0;
int j=0;
for(i=0;i<nums.length-1;i++){
if (nums[i+1]==nums[i])
continue;
else
nums[++j]=nums[i+1]; //式1
// nums[j++]=nums[i+1]; //式2
}
for(int k=0;k<nums.length;k++){
System.out.println("nums="+nums[k]);
}
return j+1;
}
public static void main(String[] args) {
int[] arrays = { 1, 1, 2 };
int length=removeDuplicates(arrays);
System.out.println("length="+length);
}
}
该程序目的为剔除一排好序的数组中重复的数字,式1和式2的差别在于nums[++j]是将j+1的值作为nums的当亲索引,而nums[j++]是将j的值先作为nums的索引后,j再自增所以该算法中应该选择式1