题目:

来源:leecode_27
简述:给定一个数组,要求不借助额外空间,移除指定元素,返回数组新的长度.
如:
输入:[4,5,5,4] 5
输出:[4,4] 2

难度

介于简单和中等之间,

主要方法

双指针法.

思路

最简单想到的办法就是:遍历,判断相等就删除一个元素,然后移位,但是移位操作太耗时间了,其实我们可以换种思路:
把那个元素移到后面去,具体来说:
用左右2个指针,分别指向数组头尾
用左指针遍历:
若此时数组元素=给定元素:
右指针从后面找到第一个不为给定元素的为止,
左右指针指向的元素交换.
重复遍历

代码

class Solution {public:int removeElement(vector<int>& nums, int val) {if(nums.size()==0) return 0;int p=0,q=nums.size()-1; //左右指针int cnt = 0; //统计找到多少个valwhile(p<=q){ //左不能超过右if(nums[p]==val){ //左边找到valcnt++;while(nums[q]==val && p < q ){ //从右边往左边 找第一个不是valcnt++; //每找到一个都要计数q--;}nums[p]=nums[q]; //交换nums[q]=val;q--;}p++;} return  nums.size()-cnt;}
};

总结

双指针可以处理数组,链表的很多题目,值得好好掌握,其实思路不是很难,但是往往边界条件处理不好,比如循环到什么时候截至?
左右能不能相等?等等,这些技巧需要多写多练多调试才能渐渐掌握.

和海王一起从零刷题之(3):原地移除元素相关推荐

  1. ​LeetCode刷题实战546:移除盒子

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  2. 【三分钟刷一题力扣】移除元素

    原题: 力扣链接:27. 移除元素 题目简述: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用额外的数组空间,你必须仅使 ...

  3. C#LeetCode刷题之#496-下一个更大元素 I(Next Greater Element I)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4026 访问. 给定两个没有重复元素的数组 nums1 和 num ...

  4. Leetcode每日一题:27.remove-element(移除元素)

    刚刚考研复试完,并不怎么理想,自己认为学的很好的知识,其实并没有那么好,更何况要求你口头表述出来:终归到底是该练习的没练习,该学精的没学精:从今天开始,攻克leetcode简单题->中等题-&g ...

  5. left join缺失右括号_LeetCode刷题实战31:最长有效括号

    来源: https://www.cnblogs.com/techflow/p/12393742.html 算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为 ...

  6. 时间插件只能选择整点和半点_【海王刷出攻略】记住这几个时间点,捕鱼大佬从此诞生...

    点击蓝字关注我们 小天发现很多船长 对我们的海王.boss出现的时间 都不是很清楚 就连各个海王出现在哪个房间 也是一头雾水 今天小天就带各位船长大人 一起了解海王.boss的刷出时间吧 01 海王. ...

  7. LeetCode:数组刷题(17道经典题目)

    LeetCode 数组刷题(17道经典题目) 本文带来的是以数组为主题的经典题目,主要实现是C++,部分题目也用Python实现了. 704. 二分查找 35.搜索插入位置 34. 在排序数组中查找元 ...

  8. C#LeetCode刷题-二叉搜索树

    二叉搜索树篇 # 题名 刷题 通过率 难度 220 存在重复元素 III 19.3% 中等 315 计算右侧小于当前元素的个数 31.9% 困难 327 区间和的个数 29.5% 困难 352 将数据 ...

  9. C#LeetCode刷题-栈

    栈篇 # 题名 刷题 通过率 难度 20 有效的括号 C#LeetCode刷题之#20-有效的括号(Valid Parentheses) 33.0% 简单 42 接雨水 35.6% 困难 71 简化路 ...

最新文章

  1. UVa 164 - String Computer
  2. PyTorch ToTensor解读
  3. 降低 80% 的读写响应延迟!我们测评了 etcd 3.4 新特性(内含读写发展史)
  4. GDCM:gdcm::MediaStorage的测试程序
  5. [C++基础]025_虚函数和虚函数表
  6. 无招胜有招之Java进阶JVM(五)垃圾回收
  7. Java最小堆解决TopK问题
  8. postman如何发送application/json类的post请求
  9. 25款漂亮的 WordPress 杂志主题
  10. 为什么MediaPlayer中onCompletion()每次播放音频时都触发?
  11. Ansible(一)工作架构和原理
  12. 论文参考文献格式标准~收藏
  13. 手机便签怎么对待办分类文件夹加密
  14. html css网页代码,源码附上
  15. PowerVR GPU - The Architecture Concepts
  16. 纯 CSS 中的简单响应式汉堡菜单
  17. 说一说我在创建星球这10多天,在星球里干了啥?
  18. 阿里云oss搭建图床以及使用PicGO上传图片到图床
  19. c语言中字母与allse,六年级小学英语_所有字母组合的发音__(音标归类总结)
  20. 加速乐的欢乐破解与__jsl_clearance的生成

热门文章

  1. PB 饼状图制作过程
  2. 微信小程序behaviors介绍 behaviors使用实例
  3. Toad for Oracle工具的使用
  4. 求x+x2+x3+...+xn的值
  5. LeetCode-Python-277. 搜寻名人
  6. Java富文本设置行间距,如何解决富文本设置行间距的单行带间距问题
  7. CSS clip-path 运用
  8. VBA自动生成excel的表单及链接的方法
  9. 微信小程序之数据处理
  10. Ubuntu 安装配置