本文主要是介绍leetcode(双指针)283.移动零(C++)DAY3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1.题目
- 示例
- 提示
- 2.解答思路
- 3.实现代码
- 结果
- 4.总结
1.题目
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
示例
示例 1:
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
示例 2:
输入: nums = [0]
输出: [0]
提示
1 <= nums.length <= 104
-2^31 <= nums[i] <= 2 ^31 - 1
2.解答思路
用 i,j 遍历vector对象
其中nums[i]查找不等于0的值,交换到左侧nums[j],不断循环
nums[j]用于表示等于0的值。
参考文章:这个针对此题的动画图解非常清晰,强烈建议
3.实现代码
class Solution
{
public:void moveZeroes(vector<int> &nums){int n=nums.size();if(n == 0)return;for(int i=0,j=0; i < n ;i++){if(nums[i]!=0){//如果下标i的元素不等于0,交换到右侧if(i>j)swap(nums[i],nums[j]);j+=1;} }}
};
结果
4.总结
今天本来做了一个滑动窗口的题,感觉今天暂时没法弄清楚。
所以先做一道稍微简单一点的题打卡,继续学习~
这篇关于leetcode(双指针)283.移动零(C++)DAY3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!