文巾解题 27. 移除元素
1 题目描述
2 解题思路
一般来说,原地修改指针的题目,都是快慢指针来实现的。
2.1 传统快慢指针
时间复杂度:O(n),其中 n 为序列的长度。我们需要遍历该序列至多两次。
空间复杂度:O(1)。我们只需要常数的空间保存若干变量。
class Solution:def removeElement(self, nums: List[int], val: int) -> int:slow=0fast=0l=len(nums)while(fast<l):if(nums[fast]==val):fast+=1else:nums[slow]=nums[fast]slow+=1fast+=1return(len(nums[:slow]))
2.2 改良快慢指针(仅限本题)
如果要移除的元素恰好在数组的开头,例如序列 [1,2,3,4,5],当val 为 1 时,我们需要把每一个元素都左移一位。注意到题目中说:「元素的顺序可以改变」。实际上我们可以直接将最后一个元素 5 移动到序列开头,取代元素 1,得到序列[5,2,3,4],同样满足题目要求。这个优化在序列中 val 元素的数量较少时非常有效。
实现方面,我们依然使用双指针,两个指针初始时分别位于数组的首尾,向中间移动遍历该序列。
这样的方法两个指针在最坏的情况下合起来只遍历了数组一次。比2.1的最坏情况少遍历了一遍数组
class Solution:def removeElement(self, nums: List[int], val: int) -> int:l=len(nums)front=0back=l-1while(front<=back):print(front,back,nums)if(nums[front]==val):nums[front]=nums[back]back-=1else:front+=1return(len(nums[:front]))
文巾解题 27. 移除元素相关推荐
- 文巾解题 203. 移除链表元素
1 题目描述 2 解题思路 2.1 循环判断 先特判链表为空/只有一个元素的情况. 然后循环判断,如果下一个值等于val,那么就把当前位置的next再往后挪一个:如果值不等于val,向后推进一个. 但 ...
- 文巾解题 面试题 01.04. 回文排列
1 题目描述 2 解题思路 2.1 哈希表 创建一个哈希表,记录每个元素出现的次数.如果出现次数为奇数的元素只有一个或者没有,那么就是一个回文排列 class Solution:def canPerm ...
- 文巾解题 15. 三数之和
1 题目描述 2 解题思路 2.1 使用两数之和函数 这种做法目前超时了,如果大家有想到合适的减时间/剪枝的方法,欢迎私信or评论~ 两数之和的方法见文巾解题 1. 两数之和_刘文巾的博客-CSDN博 ...
- 文巾解题 477. 汉明距离总和
1 题目描述 2 解题思路 2.1 暴力两两比较 两个数字之间的汉明距离可以使用 文巾解题 461. 汉明距离_刘文巾的博客-CSDN博客 中的任何一种方法,但是因为这个是两两比较,时间复杂度比较高, ...
- 文巾解题 1035. 不相交的线
1 题目描述 2 解题思路 k条互不相交的直线分别连接了数组 nums1和nums2的 k 对相等的元素,而且这 k 对相等的元素在两个数组中的相对顺序是一致的,因此,这 k 对相等的元素组成的序列即 ...
- LeetCode No.704 二分查找 No.27移除元素
LeetCode No.704 二分查找 题目描述: 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在 ...
- 【代码随想录算法练习】| DAY01 | JavaScript | 数组理论基础,704. 二分查找,27. 移除元素
详细解析:请看Carl老师的讲解 数组基础理论 下标从 0 开始 内存空间地址是连续的 增删元素时,会涉及其他元素地址的变动 704. 二分查找 | 点击查看力扣对应题目 二分法,也叫折半查找法,这里 ...
- 文巾解题 342. 4的幂
1 题目描述 2 解题思路 2.1 方法1 判断log函数的结果是不是整数 class Solution:def isPowerOfFour(self, n: int) -> bool:if(n ...
- LeetCode 27.移除元素
原题链接 /** @lc app=leetcode.cn id=27 lang=cpp** [27] 移除元素标签:拷贝覆盖主要思路是遍历数组nums,每次取出的数字变量为num,同时设置一个下标an ...
最新文章
- Java 代码精简之道
- tensorflow 转 numpy 转 tensorflow
- mysql对执行结果进行html格式的输出?输出html格式?
- TCP/IP 某些最常见的错误原因码 (errno)列表
- 一个空的C++类中有什么
- 获取现成的参考文献格式方法
- 使用maven整合SSH框架详细步骤
- Android应用自动更新功能的代码实现
- Vue 封装的过渡与动画
- CreateThread()使用实例
- HDU 5410 CRB and His Birthday
- 教育主管部门管理效率、学生学习效率及教师工作效率
- Word VBA-标题设置
- 易效能:有哪些可以高效休息的方法?
- 轨道交通检测中心-轨道交通产品可靠性检测机构
- java过滤汉字和英文,java判断及过滤汉字
- conda:安装python
- haoi2008木棍分割解题报告
- 女大学生成中介销冠:卖出上亿豪宅
- vue项目中使用trackingjs人脸识别
热门文章
- 处理微信文章中防盗链问题
- 高性能Cordova App开发学习笔记
- 利用LFSR实现模2除法的原理
- discuz在线人数的实现原理(Discuz6.1.0)
- 人如其名(退了51CTO的群)
- Linux 中断之中断处理浅析
- IDEA报错Web server failed to start. Port 8080 was already in use的解决方法
- ButterKnife Zelezny导入不成功遇到的问题
- python读取单元格的值csv,比较单元格值的csv文件python
- es mysql延迟_ES 近实时搜索 更新延迟问题