Leetcode 27 Remove Element
来源:互联网 发布:xp映射网络驱动器 编辑:程序博客网 时间:2024/05/11 09:19
题目要求:
Given an array and a value, remove all instances of that value in place and return the new length.
Do not allocate extra space for another array, you must do this in place with constant memory.
The order of elements can be changed. It doesn't matter what you leave beyond the new length.
Example:
Given input array nums = [3,2,2,3]
, val = 3
Your function should return length = 2, with the first two elements of nums being 2.
--------------------------------------------------------------------------------------------------------------------------------------------------------------解法一:
利用迭代器iterator,遍历数组,找到=val的元素,就删除
代码如下:
class Solution {public: int removeElement(vector<int>& nums, int val) { vector<int>::iterator i; if(nums.size() == 0) return 0; while((i = find(nums.begin(), nums.end(), val)) != nums.end()) nums.erase(i); return nums.size(); }};
解法二:
参考了网上的解法,利用两个指针分别指向数组的开头和末尾,如果末尾元素!=val,开头元素==val,则用末尾元素替换掉开头元素,然后末尾元素指针--,开头元素指针++;如果末尾元素==val,则将末尾元素指针--;如果都!=val,则将开头元素指针++;最后返回数组元素个数即可
代码如下:
class Solution {public: int removeElement(vector<int>& nums, int val) { int size = nums.size(); if(size == 0) return 0; int low = 0; int high = size - 1; int count = 0; while(low <= high) { if(nums[high] == val) { high--; count++; continue; } if(nums[low] == val) { count++; nums[low] = nums[high]; low++; high--; } else { low++; } } return size-count; }};
0 0
- LeetCode(27)Remove Element
- [leetcode 27] Remove Element
- [leetcode 27] Remove Element
- [Leetcode] 27 - Remove Element
- leetcode|27|Remove Element
- LeetCode | #27 Remove Element
- LeetCode 27 : Remove Element
- LeetCode 27 Remove Element
- leetcode-27 Remove Element
- leetcode 27 Remove Element
- LeetCode 27 Remove Element
- LeetCode 27 Remove Element
- leetcode-27 Remove Element
- #27 Remove Element leetcode
- LeetCode---(27) Remove Element
- Leetcode 27 Remove Element
- LeetCode 27 - Remove Element
- LeetCode 27:Remove Element
- 文章标题
- nRF2401A无线传输模块介绍
- (模板题)UVALive 7362 Farey(欧拉函数)
- RN捕获异常
- [已解决]error: possibly undefined macro: AC_PROG_LIBTOOL
- Leetcode 27 Remove Element
- Ubuntu 16.04 一系列软件安装命令,包括QQ、搜狗、Chrome、vlc、网易云音乐安装方法
- 自定义搜索框
- 第五周 求两整数正差值
- 知识竞赛时,倒计时字体的大小和位置如何调整?
- Jenkins+maven+svn+tomcat操作手册(一)
- 2016中国互联网发展趋势报告(111页PPT可下载)
- postgresSQL清理xlog
- Linux应用随笔(四)文件换行问题解决方案