Remove Duplicates from Sorted Array

LeetCode OJ


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(意思是指已经排好序了?),处理后数组里每一个元素只能出现一次,返回处理后的数组长度。

不能使用额外的数组空间,只能用已经给出的确定的内存空间。

分析

因为不太懂sorted array具体指的什么,第一次做的时候以为数组是随机的,相同元素出现的位置是随机的,然后题目也没给出limit time,随手就写了一个O(n^3)

for(int i = 0; i < num; i++){
for(int j = i+1; j < num; j++){
if(array[i] == array[j]){
for(int k = j; k < num-1; k++)
array[k] = array[k+1];
num--;
j--;
}
}
}

自然是T了。然后就把sorted array当做已经排好序的数组,那就容易多了,算法也都是O(1),一看代码就明白,水题,直接上代码。

way1

if (nums.empty()) return 0;
int index = 0;
for (int i = 1; i < nums.size(); i++) {
if (nums[index] != nums[i])
nums[++index] = nums[i];
}
return index + 1;

way2 STL

return distance(nums.begin(), unique(nums.begin(), nums.end()));
  • std::distance

    template

    typename iterator_traits::difference_type

    distance (InputIterator first, InputIterator last);

    Return distance between iterators

    Calculates the number of elements between first and last.

    c++ reference

  • std::unique

    equality (1)

    template

    ForwardIterator unique (ForwardIterator first, ForwardIterator last);

    predicate (2)

    template <class ForwardIterator, class BinaryPredicate>

    ForwardIterator unique (ForwardIterator first, ForwardIterator last,

    BinaryPredicate pred);

    Remove consecutive duplicates in range

    Removes all but the first element from every consecutive group of equivalent elements in the range [first,last).

    c++ reference

相关题目

RemoveDuplicatesfromSortedArrayII

最新文章

  1. div里嵌套了img 底部会出现白边
  2. redis HA高可用方案Sentinel和shard
  3. blender源代码编译
  4. GitHub学习资料
  5. javascript中实现sleep的两种方式
  6. Away3D带你360&#176;漫游全景影像
  7. ADO.NET之1-数据库连接---ShinePans
  8. Screen tearing
  9. jq之简单的表单验证
  10. 第1回-使用ThinkPHP的3.1.3版本轻松建网站
  11. link 标签
  12. 三、OpenStack创建域,项目,用户和角色,验证,创建客户端脚本
  13. centos7+nginx负载均衡Tomcat服务
  14. 简单ATM系统
  15. 【转载分享】 JLINKv9在迅为iTOP-4412精英板上的应用
  16. SOA和Web Servcie的区别
  17. selenium chrome登陆手机 pc淘宝
  18. vijos 1046 floyd求最小环
  19. net web service 参数类型
  20. HDU 1286 找新朋友 (欧拉公式或者标记法(其实就是欧拉公式的思想))

热门文章

  1. Sequence.js 实现带有视差滚动特效的图片滑块
  2. MagicSuggest – Bootstrap 主题的多选组合框
  3. swift学习笔记之-类和结构体
  4. CSS3之3D变换实例详解
  5. button与input[type=”button”]的区别
  6. Linux内核--C语言中内嵌汇编 asm __volatile__
  7. webView 显示一段 html 代码
  8. (20160602)开源第三方学习之SDWebImage
  9. 优化MySchool数据库(一)
  10. xcode7无证书真机调试 Error: An App ID with identifier &quot;*&quot; is not avaliable. Please enter a different string.