| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 【LeetCode】移除元素、删除有序数组中的重复项、合并两个有序数组 -> 正文阅读 |
|
[数据结构与算法]【LeetCode】移除元素、删除有序数组中的重复项、合并两个有序数组 |
目录一、移除元素给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1:
示例 2:
提示:
理解思路1:首先要明白的是,该题目给定一个数组,删除题目给定的数组中存在的数字,并将删除后的数组元素个数进行返回,还有就是将非删除的元素进行往前挪动,因为改题目在自测时会根据你返回的数组元素个数进行访问,并不会去管数组后面的几个数字是多少。 对于该题目,我们可以通过循环的方式进行遍历解决。比如从第一个元素就开始判断是否为要删除的元素,如果是,通过 以第二个例子来看, 代码1
理解思路2:我们还可以通过遍历找到第一个要删除元素的下标进行标记,然后从这个位置开始相后寻找非删除的元素,当找到后就将该数组放置在 代码2
二、删除有序数组中的重复项给你一个 升序排列 的数组 由于在某些语言中不能改变数组的长度,所以必须将结果放在数组 将最终结果插入 不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 示例 1:
示例 2:
提示:
理解思路:对于这道题,其实大致思路和上一道题是类似的,只不过最开始的遍历位置从第二个元素开始,而第一个元素作为对照元素处理,什么是对照元素呢?就是从数组的第二个元素开始所要比对的元素,在数组中找到那个与对照元素不同地元素,然后将其放置在对照元素的下个一个位置,然后再将该元素重新定义为对照元素进行比对。 代码
三、合并两个有序数组给你两个按 非递减顺序 排列的整数数组 请你 合并 注意: 最终,合并后数组不应由函数返回,而是存储在数组 示例 1:
示例 2:
示例 3:
提示:
理解思路:对于这道题,我们首先想到的是使用while循环,判断条件为是否两个数组有一个已经走到了尾部,然后就是两个数组从头开始比较,将较小的元素放置在nums1中。但是这种就有可能导致将nums1中原来的数据覆盖掉,那么就得加上一层判断,若较小元素是nums1中的,则不需要移动nums1中的元素,将其放在原位置即可,再将该数组的比照标记往后移动一位;若较小元素是nums2中的,则需要将nums1数组从标记元素开始全部向后移动一个元素位置,再将nums2中的那个较小元素插入其中,并且该数组的对照标记也向后移动一位。 但是使用这种方法太繁琐,每次比较完有可能必须移动元素,时间复杂度过高。那么还有什么办法呢? 其实我们可以摒弃这种从头比较的方法,直接从尾部开始比较,将较大元素放置在nums1的最后一个可放置元素的位置。再将该位置与那个较大元素的标记往前挪动一位。同样将这样放在while循环中,判断条件为两个数组的标记是否有一个走到了数组头部。 代码
对于这些题目都是自己的见解,若有不足或有更好的方法烦请指点一二,谢谢各位刷题大佬! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 10:40:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |