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

力扣刷题:26. 删除有序数组中的重复项

一、题目要求

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

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

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

二、思路:

根据题目要求首先第一点就是我们不能额外创建空间来完成这道题目。

不创建空间怎么删除多余的元素,又如何保存应当存在的元素呢?

我们通过画图的方式来理解一下这道题目:

三、解题

int removeDuplicates(int* nums, int numsSize) {
//创建两个临时变量
    int start = 0;
    int tmp = 1;
//循环次数小于数组长度
    while (tmp < numsSize) {
//不相等的情况下:先将start++,然后再使用,使用完tmp后再进行++的操作
        if (nums[start] != nums[tmp]) {
            nums[++start] = nums[tmp++];
        } else {
//相等的时候只需要将tmp++即可
            tmp++;
        }
    }
//最终返回数组中的元素个数,由于start是下标,从0开始的所以这里要+1
    return start + 1;
}

相关文章:

  • 表单元素使用
  • 大创项目推荐 深度学习 opencv python 实现中国交通标志识别_1
  • react native上传二进制图片、视频的方法
  • 如何系统的自学python?
  • 记录一个写自定义Flume拦截器遇到的错误
  • mysql进阶知识总结
  • 在 Linux 中通过 SSH 执行远程命令时,无法自动加载环境变量(已解决)
  • CVE-2023-38408漏洞修复 - 升级openssl和openssh
  • TCP协议
  • 设计模式(3):工厂模式
  • 腾讯 tendis 替代 redis linux安装使用
  • PS之更换背景色
  • Windows下载使用nc(netcat)命令
  • 3-zookeeper之ZAB协议
  • Linux内核err.h文件分析
  • ElasticSearch、java的四大内置函数式接口、Stream流、parallelStream背后的技术、Optional类
  • 【版本控制】git使用指南
  • 【工具类】vscode 常用功能
  • python(一)网络爬取
  • 小程序中使用less
  • 本科生已发14篇SCI论文被指由其教授父亲挂名,重庆大学成立工作组核实
  • 乌克兰议会批准美乌矿产协议
  • 万玲、胡春平调任江西省鹰潭市副市长
  • 王日春已任教育部社会科学司司长,此前系人教社总编辑
  • 九部门:对机动车特别是货车排放问题的监管将更加严格
  • 上海:5月8日起5年以上首套个人住房公积金贷款利率下调至2.6%