上海站群优化,网站主机名,在线网站推荐几个,图形化html编辑器每日一题(LeetCode)----数组–移除元素#xff08;三#xff09;
1.题目#xff08;[283. 移动零](https://leetcode.cn/problems/sqrtx/)#xff09;
给定一个数组 nums#xff0c;编写一个函数将所有 0 移动到数组的末尾#xff0c;同时保持非零元素的相对顺序。
请…每日一题(LeetCode)----数组–移除元素三
1.题目[283. 移动零](https://leetcode.cn/problems/sqrtx/)
给定一个数组 nums编写一个函数将所有 0 移动到数组的末尾同时保持非零元素的相对顺序。
请注意 必须在不复制数组的情况下原地对数组进行操作。
示例 1:
输入: nums [0,1,0,3,12]
输出: [1,3,12,0,0]示例 2:
输入: nums [0]
输出: [0]提示:
1 nums.length 104-231 nums[i] 231 - 1
**进阶**你能尽量减少完成的操作次数吗
2.解题思路
思路一 快速排序
选定0为标准值不等于这个标准值的放在非零空间中等于这个标准值放在得到的非零空间之后
实现步骤
1.我们先申请一个变量用来记录不等于0的空间非零空间的最后一个元素下标最开始是-1
2.遍历原数组如果遍历到的元素是0那么我们把它放到非零空间的最后一个元素的后边同时非零空间向右扩大一位
3.遍历完数组之后我们返回这个非零空间的长度即可非零空间的长度为非零空间最后一个元素下标1
3.写出代码
思路一的代码
class Solution {
public:void moveZeroes(vectorint nums) {int value0;int index-1;int lengthnums.size();for(int i0;ilength;i){if(nums[i]!0){int temp;temp nums[index1];nums[index1]nums[i];nums[i]temp;index;}}}
};