当前位置:   article > 正文

Leetcode 27:移除元素_leetcode27移除元素 count

leetcode27移除元素 count

方法一:双指针,快指针遍历数组搜索保留值,慢指针指向下一个值的保存位置,最后返回慢指针索引即为最后数组长度。

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int fast=0;
        int slow=0; //双指针,慢指针指向被替换的位置

        while(fast<nums.size()){
            if(nums[fast]!=val){
                nums[slow]=nums[fast];
                slow++;
            }
            fast++;
        }

        return slow;
    }
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

方法一优化:双指针初始位置变为首尾,向中间靠近,判断值的顺序有所不同

left=0;
right=nums.size()-1;
if(nums[left]==val)
{	nums[left]==nums[right];
	right--;
}
else 
	left++;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

当左边值是val时,把right值赋给left,right右移,
然后下一次循环,判断left(即判断上个循环right的值),
不断将非val的值放到数组左边。

方法二:基础解法:

count=0;
遍历数组,当遇到非val值时,
for (i=0;i<nums.size();i++){
	if(nums[i]!=val)
	{	nums[count]=nums[i];
		count++;
	}
}
return count;

	
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号