首页 > 其他分享 >leetcode 80

leetcode 80

时间:2024-01-20 10:56:03浏览次数:33  
标签:nums int 元素 数组 长度 80 leetcode 输入

题目描述

  1. 删除有序数组中的重复项 II
    给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。

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

说明:

为什么返回数值是整数,但输出的答案是数组呢?

请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。

你可以想象内部操作如下:

// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝
int len = removeDuplicates(nums);

// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。

for (int i = 0; i < len; i++) {
    print(nums[i]);
}
 

示例 1:

输入:nums = [1,1,1,2,2,3]
输出:5, nums = [1,1,2,2,3]
解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3。 不需要考虑数组中超出新长度后面的元素。
示例 2:

输入:nums = [0,0,1,1,1,1,2,3,3]
输出:7, nums = [0,0,1,1,2,3,3]
解释:函数应返回新长度 length = 7, 并且原数组的前七个元素被修改为 0, 0, 1, 1, 2, 3, 3。不需要考虑数组中超出新长度后面的元素。

提示:

\(1 <= nums.length <= 3 * 10^4\)
\(-10^4 <= nums[i] <= 10^4\)
nums 已按升序排列

解答

仍然是官方的快慢指针解法更加简单, 这里需要保留两个重复元素, 因为是非严格单调的序列,所以后面的元素只能>=前面的,则只需要找到和nums[slow-2]不同的元素赋值给nums[slow]就好了 非常别致的解法

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
     int n=nums.size();
     int slow=2,fast=2;
    
     if(n<=2) return n;
     else{
        while (fast<n)
        {
            if(nums[slow-2]!=nums[fast]){nums[slow]=nums[fast];
            slow++;
           }
            else {
            fast++;
            }
        }
     }
     return slow;
    }
};

标签:nums,int,元素,数组,长度,80,leetcode,输入
From: https://www.cnblogs.com/oxidationreaction/p/17976149

相关文章

  • English80
    好男儿志在四方ambitiongoingaround:为拉选票而四处活动ambitiongoingaround(四处走)=》amition(野心)=>amition(雄心抱负)ambition包含词根it表示togo走itambit:周围;范围n.+amb-:roundambition:野心;雄心;企图+-ion构成n.ambitious:野心勃勃的;有抱负的......
  • 提速40%!江波龙推出XP2200系列M.2 2280规格SSD:疾速7100MB/s
    江波龙FORESEEXP2200系列PCIeSSD推出M.22280规格。产品搭载主流232层3DTLC闪存颗粒,并采用基于12nm工艺的4通道高性能主控芯片,支持HMB主机高速缓冲技术,能够提供高达2400MT/s的I/O速率,进一步释放产品潜能。产品所用的主控芯片减少了一半的读写通道数量,从而显著降低25%的功耗并......
  • 2-STM32F103+EC800K(移远4G Cat1)远程升级篇(阿里云物联网平台)-STM32F103使用EC800K
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/EC800K/aliyunota.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  ......
  • P8047题解
    P8047[COCI2015-2016#4]GALAKSIJA题目传送门题解显然是要删边变加边的,然后联通性也是显然要用并查集维护的,就是路径异或和需要一个数据结构来维护。发现:加边删边不影响两个点的路径异或和。所以我们可以处理出每个点到\(1\)号节点的路径异或和\(d\),于是\(Path_{u,v}=d_u......
  • P8034题解
    P8034[COCI2015-2016#7]Ozljeda题目传送门题解评橙差不多了。手玩一下样例,很容易发现\(x\)的循环节为\(K+1\),每一段分别为\(a_1,a_2,a_3,\dots,a_K,\bigoplus_{i=1}^Ka_i\)这几项,然后恰好循环节的异或值为\(0\),所以就可以直接维护前缀异或值,然后取模求答案。代码:#i......
  • dotnet 8项目Docker部署报错 Unhandled exception. Microsoft.Data.SqlClient.SqlExce
    环境:dotnet8+sqlserver2012本地开发调试正常,部署至Docker容器时,运行实例报错。查看日志显示:Unhandledexception.Microsoft.Data.SqlClient.SqlException(0x80131904):Aconnectionwassuccessfullyestablishedwiththeserver,butthenanerroroccurredduringth......
  • 1-STM32F103+EC800K(移远4G Cat1)远程升级篇(阿里云物联网平台)-STM32F103使用EC800K
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/EC800K/aliyunota.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  ......
  • Leetcode 26 删除数组重复项
    题目描述给你一个非严格递增排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为k,你需要做以下事情确保你的题解可以被通过:更改数......
  • 2-STM32F103+EC800K(移远4G Cat1)远程升级篇(自建物联网平台)-STM32通过EC800K使用htt
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/EC800K/myota.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  说明前......
  • datawhale-leetcode打卡:001-012题
    这次这十二个题目属于是极限肝出来的,有两个参考了一下题解,还是很有意思。我会按照我个人的感觉去写这个东西。螺旋矩阵(leetcode054)这个题目比较恶心的就是跑圈的过程怎么描述。首先,顺时针一圈下来是先从左到右,顶到最右边i<m,好再往下,顶到最下边i<n,好现在i--往回排,最后j--走完一......