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. 移除元素相关推荐

  1. 文巾解题 203. 移除链表元素

    1 题目描述 2 解题思路 2.1 循环判断 先特判链表为空/只有一个元素的情况. 然后循环判断,如果下一个值等于val,那么就把当前位置的next再往后挪一个:如果值不等于val,向后推进一个. 但 ...

  2. 文巾解题 面试题 01.04. 回文排列

    1 题目描述 2 解题思路 2.1 哈希表 创建一个哈希表,记录每个元素出现的次数.如果出现次数为奇数的元素只有一个或者没有,那么就是一个回文排列 class Solution:def canPerm ...

  3. 文巾解题 15. 三数之和

    1 题目描述 2 解题思路 2.1 使用两数之和函数 这种做法目前超时了,如果大家有想到合适的减时间/剪枝的方法,欢迎私信or评论~ 两数之和的方法见文巾解题 1. 两数之和_刘文巾的博客-CSDN博 ...

  4. 文巾解题 477. 汉明距离总和

    1 题目描述 2 解题思路 2.1 暴力两两比较 两个数字之间的汉明距离可以使用 文巾解题 461. 汉明距离_刘文巾的博客-CSDN博客 中的任何一种方法,但是因为这个是两两比较,时间复杂度比较高, ...

  5. 文巾解题 1035. 不相交的线

    1 题目描述 2 解题思路 k条互不相交的直线分别连接了数组 nums1和nums2的 k 对相等的元素,而且这 k 对相等的元素在两个数组中的相对顺序是一致的,因此,这 k 对相等的元素组成的序列即 ...

  6. LeetCode No.704 二分查找 No.27移除元素

    LeetCode No.704 二分查找 题目描述: 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在 ...

  7. 【代码随想录算法练习】| DAY01 | JavaScript | 数组理论基础,704. 二分查找,27. 移除元素

    详细解析:请看Carl老师的讲解 数组基础理论 下标从 0 开始 内存空间地址是连续的 增删元素时,会涉及其他元素地址的变动 704. 二分查找 | 点击查看力扣对应题目 二分法,也叫折半查找法,这里 ...

  8. 文巾解题 342. 4的幂

    1 题目描述 2 解题思路 2.1 方法1 判断log函数的结果是不是整数 class Solution:def isPowerOfFour(self, n: int) -> bool:if(n ...

  9. LeetCode 27.移除元素

    原题链接 /** @lc app=leetcode.cn id=27 lang=cpp** [27] 移除元素标签:拷贝覆盖主要思路是遍历数组nums,每次取出的数字变量为num,同时设置一个下标an ...

最新文章

  1. Java 代码精简之道
  2. tensorflow 转 numpy 转 tensorflow
  3. mysql对执行结果进行html格式的输出?输出html格式?
  4. TCP/IP 某些最常见的错误原因码 (errno)列表
  5. 一个空的C++类中有什么
  6. 获取现成的参考文献格式方法
  7. 使用maven整合SSH框架详细步骤
  8. Android应用自动更新功能的代码实现
  9. Vue 封装的过渡与动画
  10. CreateThread()使用实例
  11. HDU 5410 CRB and His Birthday
  12. 教育主管部门管理效率、学生学习效率及教师工作效率
  13. Word VBA-标题设置
  14. 易效能:有哪些可以高效休息的方法?
  15. 轨道交通检测中心-轨道交通产品可靠性检测机构
  16. java过滤汉字和英文,java判断及过滤汉字
  17. conda:安装python
  18. haoi2008木棍分割解题报告
  19. 女大学生成中介销冠:卖出上亿豪宅
  20. vue项目中使用trackingjs人脸识别

热门文章

  1. 处理微信文章中防盗链问题
  2. 高性能Cordova App开发学习笔记
  3. 利用LFSR实现模2除法的原理
  4. discuz在线人数的实现原理(Discuz6.1.0)
  5. 人如其名(退了51CTO的群)
  6. Linux 中断之中断处理浅析
  7. IDEA报错Web server failed to start. Port 8080 was already in use的解决方法
  8. ButterKnife Zelezny导入不成功遇到的问题
  9. python读取单元格的值csv,比较单元格值的csv文件python
  10. es mysql延迟_ES 近实时搜索 更新延迟问题