当前位置: 首页 > article >正文

【LeeCode】26.删除有序数组中的重复项

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

考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

  • 更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。

  • 返回 k

解【因为首项肯定保留,所以从第二项开始进行双指针】:

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

 另有解如下:

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if (nums.empty()) return 0; // 别忘记空数组的判断
        int slowIndex = 0;
        for (int fastIndex = 0; fastIndex < (nums.size() - 1); fastIndex++){
            if(nums[fastIndex] != nums[fastIndex + 1]) { // 发现和后一个不相同
                nums[++slowIndex] = nums[fastIndex + 1]; //slowIndex = 0 的数据一定是不重复的,所以直接 ++slowIndex
            }
        }
        return slowIndex + 1; //别忘了slowIndex是从0开始的,所以返回slowIndex + 1
    }
};


http://www.kler.cn/a/144877.html

相关文章:

  • 【UE5】资源(Asset)
  • elk 简单操作手册
  • Android 13.0 Launcher3 app列表页桌面图标按安装时间排序
  • hdlbits系列verilog解答(exams/m2014_q4i)-45
  • 外贸自建站服务器怎么选?网站搭建的工具?
  • 单调栈 模板
  • C语言之指针知识点总结
  • VCenter6.7 Web访问提示503 Service Unavailable
  • Linux加强篇006-存储结构与管理硬盘
  • leetcode每日一题33
  • yolov5利用yaml文件生成模型
  • Python武器库开发-前端篇之CSS元素(三十二)
  • 佳易王各行业收银管理系统软件,企业ERP管理软件,企业或个体定制开发软件以及软件教程资源下载总目录,持续更新,可关注收藏查阅
  • Docker Remote API 使用详解
  • 【MySQL】数据库基础操作
  • 无人机电力巡检系统运行流程全解读
  • js无法请求后端接口,别的都可以?
  • 如何把自己银行卡里的钱转账充值到自己支付宝上?
  • tensorflow和pytorch都分别存在CPU和GPU版本
  • MongoDB的部署