赞
踩
题源力扣:
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
要求:空间复杂度 O(1);元素的顺序可以改变
C++:
时间复杂度O(n),将数组变成有序后,用后面元素替换值为val的元素
- class Solution {
- public:
- int removeElement(vector<int>& nums, int val) {
- sort(nums.begin(),nums.end());//形成有序数组
- int cond=nums.size();
- for(int i=0;i<nums.size();i++){
- if(nums[i]==val){
- nums[i]=nums[cond-1];
- cond--;
- }
- }
- return cond;
- }
- };
另:采用STL源码remove()函数
remove()返回指向尾值的迭代器;
- class Solution {
- public:
- int removeElement(vector<int>& nums, int val) {
- return remove(nums.begin(),nums.end(),val)-nums.begin();
- }
-
- };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。