每天一道leetCode

Posted yixun2019

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每天一道leetCode相关的知识,希望对你有一定的参考价值。

1、从排序数组中删除重复项

 

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

 

题目解析: O(1) 额外空间是指空间复杂度。空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度,记做S(n)=O(f(n))。比如直接插入排序时间复杂度是O(n^2),空间复杂度是O(1) 。

解题思路:循环遍历数组,计算不重复的元素个数j,一旦遇到不重复元素则进行替换。返回值为j

另一种解法: 循环遍历数组,计算重复的元素个数j,一旦遇到不重复元素则进行替换。返回值为nums.length-j;

第三种解法:使用splice()。

技术图片

 

 

以上是关于每天一道leetCode的主要内容,如果未能解决你的问题,请参考以下文章

每天一道Java题[11]

校招准备系列:每天一道算法题

LeetCodeLeetCode之删除并获得点数——动态规划排序+动态规划

LeetCodeLeetCode之跳跃游戏Ⅱ——暴力解法+动态规划+贪婪算法

LeetCodeLeetCode之跳跃游戏Ⅱ——暴力解法+动态规划+贪婪算法

LeetCodeLeetCode之乘积最大子数组——枚举+动态规划+Kadane算法