LeetCode-移除元素

题解

  首先是我提交的解法,思路繁琐,代码长,曲线救国。采用前后指针的方法,找到符合条件的元素就交换位置。防止重复交换,要把每次交换完的val值修改,合理改成INT32MAX,即假设了测试案例的数组中不含有INT32_MAX.

#include "iostream"
#include "vector"
#include "limits"
using namespace std;
class Solution {
public:
	int removeElement(vector& nums, int val) {
	    int cnt=0;
	    for(int i=0;i

  官方题解给出了这类型提非常巧妙的快慢指针法,应该 是这一类型题的套路,要记住。

#include "iostream"
#include "vector"
using namespace std;
class Solution {
public:
	int removeElement(vector& nums, int val) {
	    int i,j;
	    for(i=0,j=0;j

  当只有较少元素要删除时,官方题解给出了效率更高的算法:遍历到要删除的元素时,将其与最后一个交换,然后数组长度减一,直接剔除元素。根据题解思路自己写了一下:

#include "iostream"
#include "vector"
#include "limits"
using namespace std;
class Solution {
public:
	int removeElement(vector& nums, int val) {
	        int n=nums.size();
	        int cnt=0;
	        for(int i=0;i

你可能感兴趣的:(LeetCode-移除元素)