你的位置:首页 > Java教程

[Java教程][LeetCode] Remove Duplicates from Sorted Array


Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.

Do not allocate extra space for another array, you must do this in place with constant memory.

For example,
Given input array nums = [1,1,2],

Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively. It doesn't matter what you leave beyond the new length.

 

     因为这是一个sorted array。所以如果几个数字的值相等,那么他们一定是排列在一起的。所以我们只要检查这个数和他相邻的数是否相等就可以了。

     但注意,因为我们要output改变后的list。所以还需要一个int来辅助我们调整排列整个list。当一个数和他周围的数不相等的话,他的位置不会有改变。但是当两个相邻的数相等的话,第二个数后面的一个数的位置就需要往前挪动一个了。当然如果连续3个数相等,就是往前移动2个位置了。

     注意count的初始值要为1,因为除了specail case外,nums的长度至少都为1。

     注意这点。其他的都好办了。代码如下。~

public class Solution {  public int removeDuplicates(int[] nums) {    if (nums == null || nums.length == 0)       return 0;    int count = 1;    for (int i = 1; i < nums.length; i++){      if (nums[i]!=nums[i-1]){        nums[count] = nums[i];        index++;      }    }    return count;   }}