leetCode 26. Remove Duplicates from Sorted Array 数组

26. 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.

题目大意:

在不申请其他空间的前提下删除一个有序数列里重复的元素。返回最终数组的长度。

代码如下:

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if (nums.empty() || nums.size() == 1)
            return nums.size();
        int cur = nums[0];
        int i = 0;
        while(i != nums.size() - 1 )
        {
            if(cur == nums[i+1])
            {
                nums.erase(nums.begin() + i + 1);
            }
            else
            {
                cur = nums[i+1];
                i++;
            }
        }
        return nums.size();
    }
};

如果不需要删除元素,只是统计最后的个数。则可以采用下面这个简洁的做法:

参考自:https://discuss.leetcode.com/topic/8907/share-my-clean-c-code

int count = 0;
for (int i = 1; i < n; i++){
	if (A[i] == A[i - 1]) count++;
	else A[i - count] = A[i];
}
return n - count;

其他思路:

(使用了额外的空间,本题不适用)将数组元素放入map中,然后输出map的大小。

2016-08-11 14:33:57

时间: 2024-08-04 14:48:18

leetCode 26. Remove Duplicates from Sorted Array 数组的相关文章

leetcode 26. Remove Duplicates from Sorted Array 、80. Remove Duplicates from Sorted Array II

两个题类似,第一个题是不允许有重复的数字,第二个题是允许每个数字最多重复两个,两个题目都要求在原数组上进行操作,并返回生成数组的长度,即空间复杂度为O(1). 两个题都是使用双指针,第一个指针指向生成新的数组的最后一个位置,第二个指针指向当前进行判断的位置. 唯一不同的是, 第二个题需要设置一个变量来控制重复的个数是否超过2 26. Remove Duplicates from Sorted Array class Solution { public: int removeDuplicates(

[LeetCode] 26. Remove Duplicates from Sorted Array ☆(从有序数组中删除重复项)

[LeetCode] Remove Duplicates from Sorted Array 有序数组中去除重复项 描述 Given a sorted array nums, 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

leetCode 26.Remove Duplicates from Sorted Array(删除数组重复点) 解题思路和方法

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.

LeetCode 26. 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 

Leetcode 26. Remove Duplicates from Sorted Array C语言

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

Java [leetcode 26]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 arra

LeetCode 26 Remove Duplicates from Sorted Array (C,C++,Java,Python)

Problem: 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 a

Leetcode 26. Remove Duplicates from Sorted Array (easy)

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 by modifying the input array in-place with O(1) extra memory. Exam

LeetCode 26 Remove Duplicates from Sorted Array (移除有序数组中重复数字)

题目链接: https://leetcode.com/problems/remove-duplicates-from-sorted-array/?tab=Description 从有序数组中移除重复数字,并且返回不重复数字的个数 遍历操作: 可以使用新的for循环 for (int n : nums){} 每次进行对比,并且更新第一个遇到不相等的元素的下标为i 对数组进行重新赋值操作 当数组长度大于1时,ans初值为1,当数组长度为0时,返回0 参考代码 : package leetcode_5