首页 > 其他分享 >#yyds干货盘点# LeetCode面试题:删除有序数组中的重复项

#yyds干货盘点# LeetCode面试题:删除有序数组中的重复项

时间:2023-02-24 19:01:17浏览次数:37  
标签:yyds 面试题 nums int 元素 fast 数组 长度 LeetCode

1.简述:

给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。

由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。

将最终结果插入 nums 的前 k 个位置后返回 k 。

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

判题标准:

系统会用下面的代码来测试你的题解:

int[] nums = [...]; // 输入数组

int[] expectedNums = [...]; // 长度正确的期望答案

int k = removeDuplicates(nums); // 调用

assert k == expectedNums.length;

for (int i = 0; i < k; i++) {

   assert nums[i] == expectedNums[i];

}

如果所有断言都通过,那么您的题解将被 通过。

 

示例 1:

输入:nums = [1,1,2]

输出:2, nums = [1,2,_]

解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。

示例 2:

输入:nums = [0,0,1,1,1,2,2,3,3,4]

输出:5, nums = [0,1,2,3,4]

解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4 。不需要考虑数组中超出新长度后面的元素。

2.代码实现:

class Solution {
public int removeDuplicates(int[] nums) {
int n = nums.length;
if (n == 0) {
return 0;
}
int fast = 1, slow = 1;
while (fast < n) {
if (nums[fast] != nums[fast - 1]) {
nums[slow] = nums[fast];
++slow;
}
++fast;
}
return slow;
}
}

标签:yyds,面试题,nums,int,元素,fast,数组,长度,LeetCode
From: https://blog.51cto.com/u_15488507/6084339

相关文章

  • LeetCode 216.组合总和III
    LeetCode216.组合总和III分析1.0回溯问题组合总和sum==n时以及path中元素个数==k时,res.add(newpath),返回后递归删除掉当前值classSolution{publicL......
  • LeetCode ● 216.组合总和III ● 17.电话号码的字母组合
    LeetCode216.组合总和III分析1.0回溯问题组合总和sum==n时以及path中元素个数==k时,res.add(newpath)返回后递归删除掉当前值classSolution{publicLi......
  • 【LeetCode二叉树#05】平衡二叉树
    力扣题目链接(opensnewwindow)](https://leetcode.cn/problems/balanced-binary-tree/)给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为......
  • leetcode 12. 整数转罗马数字
    replace法,但是比较耗时publicStringintToRoman(intnum){StringrawStr=firstConvert(num);rawStr=rawStr.replace("DCCCC","CM");......
  • LeetCode-20. 有效的括号(java)
    一、前言:......
  • 那些高级前端是如何回答面试题的
    防抖节流题目描述:手写防抖节流实现代码如下://防抖functiondebounce(fn,delay=300){//默认300毫秒lettimer;returnfunction(){constargs=......
  • 字节前端二面高频vue面试题整理
    怎样理解Vue的单向数据流数据总是从父组件传到子组件,子组件没有权利修改父组件传过来的数据,只能请求父组件对原始数据进行修改。这样会防止从子组件意外改变父级组件......
  • 京东前端二面必会vue面试题(持续更新中)
    说一下Vue的生命周期Vue实例有⼀个完整的⽣命周期,也就是从开始创建、初始化数据、编译模版、挂载Dom->渲染、更新->渲染、卸载等⼀系列过程,称这是Vue的⽣命周期。......
  • 阿里前端二面必会react面试题指南
    这段代码有什么问题吗?这段代码有什么问题:this.setState((prevState,props)=>{return{streak:prevState.streak+props.count,};});答案:没有什么问......
  • [LeetCode] 502. IPO
    SupposeLeetCodewillstartits IPO soon.InordertosellagoodpriceofitssharestoVentureCapital,LeetCodewouldliketoworkonsomeprojectstoinc......