您的位置:首页 > 编程语言 > Java开发

LeetCode(026) Remove Duplicates from Sorted Array (Java)

2015-04-12 03:13 330 查看
题目如下:

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 A = [1,1,2],

Your function should return length = 2, and A is now [1,2].

分析如下:

类似 remove element 拿到题目,常见技巧,使用oldIndex和newIndex两个index。

如果没有in place的限制,可以很自然地想到,开出一个新数组,oldIndex每次从原来数组读取一个元素,然后newIndex操作新数组。

由于新数组必然比原数组更小,所以其实可以把两个数组重合来做。

我的代码:

// 251 ms
public class Solution {
    public int removeDuplicates(int[] A) {
     //1,1,1,2,2,3,4,5,5,5,6,6,6,7,7,7,8,9,10,10,10
     if (A.length < 2) return A.length;
     int newIndex = 0;
     for (int oldIndex = 1; oldIndex < A.length; ++oldIndex) {
            if (A[oldIndex] != A[newIndex]) {
                A[++newIndex] = A[oldIndex];
            }
     }
     return newIndex + 1;
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: