leetcode

删除排序数组中的重复项

第26题

思路:

每个数组的长度都是大于等于1的,遍历数组,如果遇到不同的就加一,这里尽量不用len函数

Python代码

class Solution( ):
    def removeDuplicates(self,nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if not nums or len(nums)== 0:
            return 0
        length = 1
        i = 0
        for j in range(1, len(nums)):
            if nums[j] != nums[i]:
                # 不相等就加一
                i += 1
                # 重新赋值
                nums[i] = nums[j]
                length += 1
        return length

Java代码

class Solution {
    public int removeDuplicates(int[] nums) {
        if (nums == null || nums.length == 0)
            return 0;
        int i = 0; // last processed item
        for (int j = 1; j < nums.length; j++) {
            if (nums[j] != nums[i]) {
                nums[++i] = nums[j];
            }
        }
        return i + 1;
    }
}

代码

var removeDuplicates = function(nums) {
    var i = 0;
    //forEach 遍历数组
    nums.forEach(function (elem) {
        if (elem !== nums[i]) {
            nums[++i] = elem;
        }
    });
    return nums.length && i + 1;
};
收藏 打印