首页 > 其他分享 >#yyds干货盘点# LeetCode 腾讯精选练习 50 题:删除有序数组中的重复项

#yyds干货盘点# LeetCode 腾讯精选练习 50 题:删除有序数组中的重复项

时间:2022-10-25 18:33:21浏览次数:62  
标签:yyds nums int 元素 50 fast 数组 长度 LeetCode

题目:

给你一个 升序排列 的数组 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 。不需要考虑数组中超出新长度后面的元素。

代码实现:

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,元素,50,fast,数组,长度,LeetCode
From: https://blog.51cto.com/u_13321676/5795048

相关文章

  • Luogu 1507 NASA的食物计划
    题目链接:​​传送门​​题目背景NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安全技术问题一直大伤脑筋,因此在各方压力下终止了航天飞机的历史,但是此类事情会不会在以......
  • Leetcode weekly conetest 315
    Leetcodeweeklyconetest3151.与对应负数同时存在的最大正整数解法:碰到这种查询数字是否存在的时候,用哈希表就可以很好的解决,我们首先将所有数字都插入到哈希表中,然......
  • Luogu P2150 [NOI2015]寿司晚宴
    题目链接:​​传送门​​太难了太难了题意就是问有多少种分案把一个到的排列分配为两组并使组间元素两两互质首先我们只需要考虑根号内的质因子对答案的影响,因为根号外的因......
  • POJ 1950(不打表做法)
    这题就是搜……注意设定maxn要不然肯定爆maxn=1*10^最大位数/21234..89-11121314这样的Programaa;constmaxn=1000000000000000;varn,t:longint;a:array[1..15]......
  • LOJ #2500. 「NOIP2014」飞扬的小鸟
    题目链接:​​传送门​​不知不觉这么久没更了上了一阵子文化课,还比较颓没怎么做题就做了做noip历年的题也没什么好发的挑了一个,写了些注释#include<bits/stdc++.h>#def......
  • .NET编译器错误 CS5001
    需要在项目.csprog文件中显式添加<ProjectSdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>netcoreapp2.1</Targ......
  • #yyds干货盘点# 虚拟存储技术
    在常见的存储管理方案中,必须为每个作业分配足够的空间,以便装入全部信息。当主存空间不能满足作业要求时,作业便无法装入主存执行,此时就可以使用虚拟存储技术。如果一个作业的......
  • BZOJ 1502([NOI2005]月下柠檬树-Simpson积分)
    1502:[NOI2005]月下柠檬树TimeLimit: 5Sec  MemoryLimit: 64MBSubmit: 250  Solved: 148[​​Submit​​][​​Status​​][​​Discuss​​]Descr......
  • LeetCode2447 最大公因数等于 K 的子数组数目 题解
    看到这题,发现可以直接枚举字串进行check,复杂度是\(\mathcalO(n^2(n+\logw))\),但是可以固定左端点,向右推右端点统计答案优化到\(\mathcalO(n(n+\logw))\)。虽然这里......
  • 剑指 Offer 56 - II. 数组中数字出现的次数 II - 力扣(LeetCode)
    剑指Offer56-II.数组中数字出现的次数II-力扣(LeetCode)在一个数组nums中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。思路......