LeetCode集锦(八) - 第26题 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 by modifying the input array in-place with O(1) extra memory. Example 1: Given 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 returned length. Example 2: Given nums = [0,0,1,1,1,2,2,3,3,4],Your function should return length = 5, with the first five elements of nums being modified to 0, 1, 2, 3, and 4 respectively.It doesn't matter what values are set beyond the returned length.Clarification: Confused why the returned value is an integer but your answer is an array? Note that the input array is passed in by reference, which means modification to the input array will be known to the caller as well. Internally you can think of this: // nums is passed in by reference. (i.e., without making a copy)
int len = removeDuplicates(nums);// any modification to nums in your function would be known by the caller.
// using the length returned by your function, it prints the first len elements.
for (int i = 0; i < len; i++) {print(nums[i]);
} 复制代码

翻译:

给定一个已排序的数组号,删除重复项,使每个元素只出现一次,并返回新的长度。
不要为另一个数组分配额外的空间,您必须使用O(1)额外内存修改输入数组。
示例1:
给定nums = [1,1,2],
函数应该返回length = 2, nums的前两个元素分别为1和2。
在返回长度之外留下什么并不重要。
示例2:
给定nums = [0,0,1,1,1,2,2,3,3,4],
函数应该返回length = 5, nums的前五个元素分别修改为0、1、2、3和4。
在返回长度之外设置什么值并不重要。
澄清:
为什么返回的值是整数而您的答案是数组?
注意,输入数组是通过引用传入的,这意味着调用者也知道对输入数组的修改。
你可以这样想:
// nums是通过引用传入的。(即。,无须复印)
int len = removeduplicate (nums);
//函数中对nums的任何修改都会被调用者知道。
//使用函数返回的长度,它输出第一个len元素。
for (int i = 0;i<len;i++){
print (num[i]);
}


解题思路

本题思路很简单,要求我们使用O(1)的空间,也就是我们只能在当前数组上操作,由题目可知,数组是排序的,所以只要遍历一次,把不重复的往前面放,那么最前面的就是我们需要的结果。

解题方法

  1. 按照我们的思路来编辑,代码如下

     if (nums.length <= 1) {return nums.length;}int number = 0;for (int i = 1; i < nums.length; i++) {if (nums[i] > nums[number]) {number++;nums[number] = nums[i];}}return number + 1;
    复制代码

    时间复杂度: 该方案用了循环,循环层数为1,即T(n)=O(n)

    空间复杂度: 该方案没有使用额外的空间,所以空间复杂度是O(1);

总结

本题的大致解法如上所诉,本题只想到了一种方法,直接按照思路编写

转载于:https://juejin.im/post/5cd90d53f265da03587c1d43

LeetCode集锦(八) - 第26题 Remove Duplicates From Sorted Array相关推荐

  1. 【LeetCode从零单排】No26.Remove Duplicates from Sorted Array

    题目      题目要求:去除sort int数组中的重复项. Given a sorted array, remove the duplicates in place such that each ...

  2. 【算法】LeetCode算法题-Remove Duplicates from Sorted Array

    这是悦乐书的第149次更新,第151篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第8题(顺位题号是26).给定一个已经排序(由小到大)的整数数组(元素可以重复),计算其 ...

  3. LeetCode 26 Remove Duplicates from Sorted Array [Array/std::distance/std::unique] c++

    LeetCode 26 Remove Duplicates from Sorted Array [Array/std::distance/std::unique] <c++> 给出排序好的 ...

  4. Remove Duplicates from Sorted Array II -- LeetCode

    原题链接: http://oj.leetcode.com/problems/remove-duplicates-from-sorted-array-ii/  这道题跟Remove Duplicates ...

  5. LeetCode算法入门- Remove Duplicates from Sorted Array -day21

    LeetCode算法入门- Remove Duplicates from Sorted Array -day21 题目描述 Given a sorted array nums, remove the ...

  6. 26. Remove Duplicates from Sorted Array【easy】

    26. Remove Duplicates from Sorted Array[easy] Given a sorted array, remove the duplicates in place s ...

  7. [Leetcode] Remove duplicates from sorted array ii 从已排序的数组中删除重复元素

    Follow up for "Remove Duplicates": What if duplicates are allowed at most twice? For examp ...

  8. Leetcode OJ: Remove Duplicates from Sorted Array I/II

    删除排序数组重复元素,先来个简单的. Remove Duplicates from Sorted Array Given a sorted array, remove the duplicates i ...

  9. LeetCode 80. Remove Duplicates from Sorted Array II

    80. Remove Duplicates from Sorted Array II My Submissions QuestionEditorial Solution Total Accepted: ...

最新文章

  1. 弱监督语义分割--Object Region Mining with Adversarial Erasing
  2. 邬贺铨:5G资费便宜10倍 WiFi覆盖更为重要
  3. charles 抓包 (二)
  4. linux telnet localhost 25,telnet localhost 25 没反应. 大家帮忙看下什么问题...
  5. Report20200828螺旋波等离子体推力器HPT模拟放电调试小结
  6. vb.net2019-多线程并行计算(3)
  7. 将jOOQ与Spring结合使用:配置
  8. 生成微信蓝色昵称,原来如此简单
  9. 访问服务器显示无法访问目标主机,发送4接收4无法访问目标主机
  10. oracle脚本转mpp脚本,范本:使用expdp/impdp克隆生成一个新数据库
  11. 使用JavaScript在页面打印系统当前时间
  12. 复现autotune算法时遇到的若干问题及其解决方案
  13. 【AI视野·今日CV 计算机视觉论文速览 第186期】Fri, 6 Nov 2020
  14. 程序员也要学英语——带你理清英语语法思路
  15. 统计分析之:正态性检验——SPSS操作指南
  16. mac查看电脑系统位数
  17. python源文件的扩展名是什么_python程序文件的扩展名称是什么
  18. nvidia卸载程序无法继续运行_win10系统下nvidia安装程序无法继续不兼容的解决办法_nvidia显卡驱动与系统不兼容...
  19. React 面试题 回答
  20. 预防WinRAR文件损坏

热门文章

  1. Android7.0多窗口实现原理(一)
  2. 微信小程序问题解决方案
  3. python用matplotlib画人口图_Python+Matplotlib画contour图
  4. 互联网思维-产品思维(2)
  5. Swift常用库收集
  6. 使用CoreLocation进行定位(Swift版)
  7. python支持中文吗_Python中使用中文
  8. hihoCoder week3 KMP算法
  9. DOMContentLoaded与load的区别
  10. RAD Studio (Delphi) Firemonkey 教程