/**
* Index: 27
* Title: Remove Element
* Author: ltree98
**/
记录不重复的序列号,然后往前并。
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int index = 0, len = nums.size();
for(int i = 0; i < len ; i++)
if(nums[i] != val)
nums[index++] = nums[i];
return index;
}
};
从后往前遍历,如果是目标值,跟尾部的值交换(根据出现目标值的个数)
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int repeat = 0, len = nums.size() - 1;
for(int i = len; i >= 0; i--) {
if(nums[i] == val) {
nums[i] ^= nums[len-repeat];
nums[len-repeat] ^= nums[i];
nums[i] ^= nums[len-repeat];
++repeat;
}
}
return (len - repeat + 1);
}
};

本文介绍了一种名为Remove Element的算法实现方法,通过两种不同的策略来移除数组中指定的元素。一种是从前往后遍历并记录不重复的序列号;另一种是从后往前遍历,如果是目标值则与尾部值进行交换。
1万+

被折叠的 条评论
为什么被折叠?



