和海王一起从零刷题之(3):原地移除元素
题目:
来源: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):原地移除元素相关推荐
- LeetCode刷题实战546:移除盒子
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
- 【三分钟刷一题力扣】移除元素
原题: 力扣链接:27. 移除元素 题目简述: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用额外的数组空间,你必须仅使 ...
- C#LeetCode刷题之#496-下一个更大元素 I(Next Greater Element I)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4026 访问. 给定两个没有重复元素的数组 nums1 和 num ...
- Leetcode每日一题:27.remove-element(移除元素)
刚刚考研复试完,并不怎么理想,自己认为学的很好的知识,其实并没有那么好,更何况要求你口头表述出来:终归到底是该练习的没练习,该学精的没学精:从今天开始,攻克leetcode简单题->中等题-&g ...
- left join缺失右括号_LeetCode刷题实战31:最长有效括号
来源: https://www.cnblogs.com/techflow/p/12393742.html 算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为 ...
- 时间插件只能选择整点和半点_【海王刷出攻略】记住这几个时间点,捕鱼大佬从此诞生...
点击蓝字关注我们 小天发现很多船长 对我们的海王.boss出现的时间 都不是很清楚 就连各个海王出现在哪个房间 也是一头雾水 今天小天就带各位船长大人 一起了解海王.boss的刷出时间吧 01 海王. ...
- LeetCode:数组刷题(17道经典题目)
LeetCode 数组刷题(17道经典题目) 本文带来的是以数组为主题的经典题目,主要实现是C++,部分题目也用Python实现了. 704. 二分查找 35.搜索插入位置 34. 在排序数组中查找元 ...
- C#LeetCode刷题-二叉搜索树
二叉搜索树篇 # 题名 刷题 通过率 难度 220 存在重复元素 III 19.3% 中等 315 计算右侧小于当前元素的个数 31.9% 困难 327 区间和的个数 29.5% 困难 352 将数据 ...
- C#LeetCode刷题-栈
栈篇 # 题名 刷题 通过率 难度 20 有效的括号 C#LeetCode刷题之#20-有效的括号(Valid Parentheses) 33.0% 简单 42 接雨水 35.6% 困难 71 简化路 ...
最新文章
- UVa 164 - String Computer
- PyTorch ToTensor解读
- 降低 80% 的读写响应延迟!我们测评了 etcd 3.4 新特性(内含读写发展史)
- GDCM:gdcm::MediaStorage的测试程序
- [C++基础]025_虚函数和虚函数表
- 无招胜有招之Java进阶JVM(五)垃圾回收
- Java最小堆解决TopK问题
- postman如何发送application/json类的post请求
- 25款漂亮的 WordPress 杂志主题
- 为什么MediaPlayer中onCompletion()每次播放音频时都触发?
- Ansible(一)工作架构和原理
- 论文参考文献格式标准~收藏
- 手机便签怎么对待办分类文件夹加密
- html css网页代码,源码附上
- PowerVR GPU - The Architecture Concepts
- 纯 CSS 中的简单响应式汉堡菜单
- 说一说我在创建星球这10多天,在星球里干了啥?
- 阿里云oss搭建图床以及使用PicGO上传图片到图床
- c语言中字母与allse,六年级小学英语_所有字母组合的发音__(音标归类总结)
- 加速乐的欢乐破解与__jsl_clearance的生成