排序数组删除重复项
力扣简单习题:
大致思路
留一个计数君,碰到不一样的,就将计数君+1,并在此索引处直接将第二个值填充即可。
代码实现
package com.immunize.leetcode.delete_same;
/**
* leetcode:根据输入的数组,删除相同的值,且要在位置不变的情况下删除,在原数组里的原位置上删除,超出的位置不计
*
* 例:0,0,1,1,1,2,2,3,3,4 返回0 1 2 3 4,且长度变为5
*
* 解答思路:留一个计数君,碰到不一样的,就将计数君+1,并在此索引处直接将第二个值填充即可。
*
* @author Mr IMMUNIZE 2019.8.7
*
*/
public class DeleteSame {
// 原型拷贝过来
public int removeDuplicates(int[] nums) {
// 当nums数组为空时,则返回0
if (nums == null || nums.length == 0) {
return -1;
}
// 初始化计数君count
int count = 0;
// 遍历数组
for (int i = 0; i < nums.length; i++) {
// 如果当前值和数组第一个值不同,则计数君加一,在计数君索引处修改值为当前值即可
if (nums[i] != nums[count]) {
count++;
nums[count] = nums[i];
}
}
// 长度为返回值,也就是count+1
count++;
return count;
}
}
----------------------------------------------------------------------------------------
package com.immunize.leetcode.delete_same;
/**
* 测试
*
* @author Mr IMMUNIZE
*
*/
public class DeleteSameTest {
public static void main(String[] args) {
DeleteSame ds = new DeleteSame();
int[] nums = { 0, 0, 1, 1, 1, 2, 2 };
System.out.println(ds.removeDuplicates(nums));
}
}