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

LeetCode面试经典150题(day 2)

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

难度:简单

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

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

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

    示例 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。不需要考虑数组中超出新长度后面的元素。
    

思路:

比较 p 和 q 位置的元素是否相等。

如果相等,q 后移 1 位 如果不相等,将 q 位置的元素复制到 p+1 位置上,p 后移一位,q 后移 1 位 重复上述过程,直到 q 等于数组长度。

返回 p + 1,即为新数组长度。

 

 

代码:

class Solution {public int removeDuplicates(int[] nums) {int j = 0;for (int i = 1; i < nums.length; i++) {if(nums[j] != nums[i]) {nums[++j] = nums[i];}}return j+1;}
}

运行结果:

 

80. 删除有序数组中的重复项 II 

难度:中等

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

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

示例 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 。 不需要考虑数组中超出新长度后面的元素。

 思路:

这题是上一题的拓展,我们依旧可以采用上一题的思路:双指针,不过我们可以定义一个flag表示该元素是否重复,当两个指针的元素进行比较是否相等,如果相等,将flag置为false,表示该元素已经出现过一次了,下次出现只需要看flag是否为true,不为true则跳过该元素


代码:

class Solution {public int removeDuplicates(int[] nums) {boolean flag = true;int j = 0;for( int i = 1; i < nums.length ; i++ ) {if(nums[j] != nums[i]) {nums[++j] = nums[i];flag = true;}else if(nums[j] == nums[i] && flag){nums[++j] = nums[i];flag = false;}}return j+1;}
}

运行结果:

 

http://www.lryc.cn/news/138143.html

相关文章:

  • 阿里云机器学习PAI全新推出特征平台 (Feature Store),助力AI建模场景特征数据高效利用
  • 网络安全工具和资源推荐: 介绍网络安全领域中常用的工具、框架、资源和学习资料
  • 『C语言入门』探索C语言函数
  • Django基础3——视图函数
  • python 基础篇 day 4 选择结构—— if 结构
  • 科技赋能,教育革新——大步迈向体育强国梦
  • 【秋招基础】后端开发——笔面试常见题目
  • 自定义loadbalance实现feignclient的自定义路由
  • 论文笔记:从不平衡数据流中学习的综述: 分类、挑战、实证研究和可重复的实验框架
  • C#设计模式六大原则之--迪米特法则
  • 一次js请求一般情况下有哪些地方会有缓存处理?
  • CSDN编程题-每日一练(2023-08-24)
  • 怎么把PDF转成Word?需要注意什么事项?
  • USACO22OPEN Pair Programming G
  • 实战分享之springboot+easypoi快速业务集成
  • 金字塔原理(思考的逻辑)
  • 机器学习之前向传播(Forward Propagation)和反向传播(Back propagation)
  • Matlab高光谱遥感数据处理与混合像元分解实践技术
  • Docker consul的容器服务注册与发现
  • Spring注入外部 工厂类Bean
  • WPF网格拖动自动布局效果
  • 肯德尔秩相关系数(Kendall‘s Tau)排名
  • 电脑怎么把视频转换gif动图?视频生成gif的操作步骤
  • 使用 docker 搭建 granfana+prometheus 监控平台监控测试服务器资源
  • 一、MQ的基本概念
  • Android面试题:MVC、MVP、MVVM
  • vue js 回调函数 异步处理 为什么要 let that = this
  • 前端面试:【算法与数据结构】常见数据结构解析
  • RTSP/Onvif视频服务器EasyNVR安防视频云服务平台出现崩溃并重启的情况解决方案
  • 软考高级系统架构设计师系列论文九十四:论计算机网络的安全性设计