删除顺序数组的重复数字

描述:给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。

不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。

样例

给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。

思路:

第一次是错的,后来编译通过了,这道题我的想法是:第一,因为题上要求不能新增数组空间,所以我们考虑在原数组的覆盖,也就是把重复数字覆盖前面的一个数字,后面的依次往前覆盖,在编程里,是不存在删除一说的,只是数据的覆盖。覆盖前面的以后,最后的就可以通过缩小数据空间。

代码:

class Solution {
public:
int removeDuplicates(vector<int> &nums) {

if(nums.empty())
{
return 0;
}

int n = nums.size(),k=0;

for(int i=1;i<n;++i)
{
if(nums[i] != nums[k])
{
nums[++k] = nums[i];
}
}
nums.resize(k+1);
return k+1;
}
};

时间: 03-05

删除顺序数组的重复数字的相关文章

去掉有序数组中重复数字 原地 leetcode java (最简单的方法)

1.利用荷兰国旗的思路,每次记住最后一个位置,遇到一个不重复的数,放在它后面,代码很简单. 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 consta

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

删除有序数组的重复元素and爬楼梯and股票买入的最佳时期

---------1-----------#include "stdafx.h" #include"iostream" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int a[10]={1,4,4,5,6,7,7,8,9,10}; int i=0; int j=0; for(i=0;i<10;i++) { if(a[i]==-1)     {    break; } if(a[i]==

找出排序数组中重复数字的个数

开始我的思路是先二分查找找到一个,然后再两边分别看个数. 但是这种方法会退化到O(n).效率不好. 所以更好的方法是,先找出第一个,再找出最后一个.这个在二分查找的时候,通过判断条件的处理,是能够获得的. 比较基本的思路是,如果找到的数=k,那么判断前面一个数是不是k,如果不是,停止查找,这个是第一个:如果是的,那么继续在前半部分查找.领悟.

删除数组中的重复数字

#include <stdio.h> main() {  int i,j,t; int a[10]; printf("请输入10个数:\n"); for(i=0;i<10;i++)             scanf("%d",&a[i]); printf("输入的10个数是:"); for(i=0;i<10;i++) {printf("%d  ",a[i]); printf("\n&

删除排序数组中的重复数字1

System.out.println("删除数组中重复元素后数组的长度为:"+a); } public static int  removeDuplicates(int[] nums) { int count=0; if (nums.length==0 ||nums.length==1) return -1; else { Arrays.sort(nums); for(int i=0;i<nums.length-1;i++) { if(nums[i]!=nums[i+1]) {

查找数组中重复的数字

题目来源于<剑指Offer>中的面试题3:找出数组中重复的数字. // 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内.数组中某些数字是重复的,但不知道有几个数字重复了, // 也不知道每个数字重复了几次.请找出数组中任意一个重复的数字.例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3}, // 那么对应的输出是重复的数字2或者3. 解决方法有多种,包括数组排序,哈希表法,以及作者推荐的重排数组法.此处介绍自己的一个做法,以空间换时间,通过新建数组来实现快速查

js选择颜色小游戏(随机生成不含重复数字的数组,通过数组中的数控制定义好的数组)

<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>js网页版小游戏</title> <style media="screen"> .wrap { width: 577px; outline: 1px solid hotpink; margin: 100px auto; box-shadow: 0 0 5px; } .

数组中重复的数字

题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3. 1 class Solution { 2 public: 3 // Parameters: 4 // numbers: an array of integers 5 // length: the length of arr