首页 > 其他分享 >LeetCode刷题(13)~移动零

LeetCode刷题(13)~移动零

时间:2023-01-12 15:41:01浏览次数:56  
标签:13 nums int back ++ vector push LeetCode 刷题


题目描述

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

示例:

输入: [0,1,0,3,12]
输出: [1,3,12,0,0]

说明:

  1. 必须在原数组上操作,不能拷贝额外的数组。
  2. 尽量减少操作次数。

解答 By 海轰

提交代码

class Solution {
public:
void moveZeroes(vector<int>& nums) {
queue<int> q;
for(int i=0;i<nums.size();++i)
{
if(nums[i]!=0)
q.push(nums[i]);
nums[i]=0;
}
for(int i=0;!q.empty();++i)
{
nums[i]=q.front();
q.pop();

}
}
};

运行结果

LeetCode刷题(13)~移动零_leetcode


思路

        这里海轰想的是利用队列。首先遍历数组,将不为零的数字加入队列,然后再将其归零。最后依次将队列中的数字按顺序加入数组。

C++完整测试代码

#include<iostream>
#include<vector>
#include<queue>
using namespace std;
void moveZeroes(vector<int>& nums) {
queue<int> q;
for(int i=0;i<nums.size();++i)
{
if(nums[i]!=0)
q.push(nums[i]);
nums[i]=0;
}
for(int i=0;!q.empty();++i)
{
nums[i]=q.front();
q.pop();
}
}
int main()
{
vector<int> a;
a.push_back(1);
a.push_back(0);
a.push_back(2);
a.push_back(3);

moveZeroes(a);
for(int i=0;i<a.size();++i)
cout<<a[i]<<" ";

return 0;
}

其他解答

相关文章

  • LeetCode刷题(12)~加一
    题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位,数组中每个元素只存储单个数字。你可以假设除了整数0之外,这个整......
  • LeetCode刷题(10)~只出现一次的数字
    题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。你可以不使用额外......
  • LeetCode刷题(11)~ 两个数组的交集 II
    题目描述给定两个数组,编写一个函数来计算它们的交集。示例1:输入:nums1=[1,2,2,1],nums2=[2,2]输出:[2,2]示例2:输入:nums1=[4,9,5],nums2=[9,4,9,8,4]输出:[4,9]......
  • LeetCode刷题(9)~存在重复元素
    题目描述给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回true。如果数组中每个元素都不相同,则返回false。示例1:输入:[1,2,3,1]输......
  • LeetCode刷题(8)~旋转数组
    题目描述给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。示例1:输入:[1,2,3,4,5,6,7]和k=3输出:[5,6,7,1,2,3,4]解释:向右旋转1步:[7,1,2,3,4,5,6......
  • LeetCode刷题(7)~删除排序数组中的重复项
    题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用......
  • LeetCode刷题(4)~ 最长公共前缀
    题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串“”。示例1:输入:[“flower”,“flow”,“flight”]输出:“fl”示例2:输......
  • LeetCode报错:Line 923: Char 9: runtime error: reference binding to null pointer o
    LeetCode报错报错原因:Line923:Char9:runtimeerror:referencebindingtonullpointeroftype‘std::__cxx11::basic_string<char,std::char_traits,std::alloca......
  • LeetCode刷题(2)~回文数
    题目描述        判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例1:输入:121输出:true示例2:输入:-121输出:false......
  • LeetCode刷题(1)~整数反转
    题目描述给出一个32位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入:123输出:321示例2:输入:-123输出:-321示例3:输入:120输出:21注意:假......