Remove Element针对删除元素多和少的两种情况解析
来源:互联网 发布:淘宝店铺首页分析报告 编辑:程序博客网 时间:2024/04/29 20:06
今天做的LeetCode27还是蛮简单的,但是收获很大。
此题的目的就是在序列中删除指定值。
可以这么办
从头开始遍历数组
用count计数:记录这个元素在数组中出现的次数
每个元素依次向前挪动这些个单位
但感觉这个方法太笨了,转换思路,得到以下解法
用两个指针,一个负责遍历全部元素,另一个指向当前符合要求的元素,得到如下代码:
int removeElement(vector<int>& nums, int val) {if (nums.size == 0)return 0;int id = 0;for (int i = 0; i < nums.size; i++){if (nums[i]!=val){nums[id] = nums[i];id++;}}return id;}
代码并不难理解,就是遇见需要去除的元素直接忽略,当得到符合条件的元素的时候用id进行标记
但题目中的要求是可以打乱元素顺序。官方给出了一种很巧妙的解决思路。利用此思路得出以下解决办法,速度比之前快很多。代码如下:
int removeElement(vector<int>& nums, int val) {int n = nums.size();for (int i = 0; i < n ; ){if (nums[i] == val){nums[i] = nums[n-1];n--;}elsei++;}return n;}
这种方法在删除元素较少的时候速度要比前一种快很多
前一种方法适合在需要删除的元素比较多的时候使用
0 0
- Remove Element针对删除元素多和少的两种情况解析
- Remove Element 删除元素
- Remove Element 数组删除指定的元素
- leetcode:Remove Element删除元素
- leetCode 27.Remove Element (删除元素) 解题思路和方法
- Remove Element的两种解法
- 删除序列中的指定元素 Remove Element
- LeetCode | Remove Element(删除指定元素)
- Remove Element(删除数组某一元素)
- LeetCode 27. Remove Element(删除元素)
- Remove Element:删除数组中指定元素
- 27. Remove Element 删除指定元素
- 【LeetCode-面试算法经典-Java实现】【027-Remove Element(删除数组中指定的元素)】
- [LeetCode-27] Remove Element(从数组删除指定的元素)
- leetcode27 Remove Element 去掉指定的元素
- Remove Element 数组中删除给定元素 @ LeetCode
- leetcode:Remove Element (删除给定元素)【面试算法题】
- LeetCode OJ 之 Remove Element (删除指定元素)
- Android怎么集成支付宝支付和微信支付功能(下)
- Java应用从集中式步入分布式
- 机器学习练习记录(2):Logistic Regression (回归分析),L1,L2范数
- 使用并监控proxool连接池
- Java Reference概念整理
- Remove Element针对删除元素多和少的两种情况解析
- URI和URL有什么区别
- 框架搭建之BaseActivity
- 【HPUOJ】Divide the pears (poj1664)
- UVA 437 The Tower of Babylon 巴比伦塔(DAG上的动态规划)
- Vue.js学习系列(五)---vuejs指令
- LeetCode 92. Reverse Linked List II
- WordPress分类页面获取当前分类的ID
- 自然语言查询接口IDCQ(二)算法描述