当前位置: 代码迷 >> 综合 >> Leetcode 283. Move Zeroes (cpp)
  详细解决方案

Leetcode 283. Move Zeroes (cpp)

热度:87   发布时间:2023-11-26 06:04:37.0

题目

在这里插入图片描述

解法1:

将非0元素全部按顺序放到数组前面,后面的位置填充0

class Solution {
    
public:void moveZeroes(vector<int>& nums) {
    int ind = 0;for(int i=0;i<nums.size();i++){
    if(nums[i] != 0){
    nums[ind] = nums[i];ind += 1;}}for(int i=ind;i<nums.size();i++){
    nums[i] = 0;}}
};

解法2:双指针

这种解法一个指针始终指向要交换的位置,另一个指针指向需要被交换的非0元素的位置

class Solution {
    
public:void moveZeroes(vector<int>& nums) {
    int i = 0, j = 0;while(i < nums.size() && j < nums.size()){
    if(nums[j] != 0){
    swap(nums[i],nums[j]);i++;j++;}else{
    j++;}}}
};