概述
给定一个数组,将所有 0 值移动到数组的末尾,同时保持所有非零元素的相对位置
leetcode+面试:给定一个数组,将所有 0 值移动到数组的末尾,同时保持所有非零元素的相对位置
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
1.必须在原数组上操作,不能拷贝额外的数组。
2.尽量减少操作次数。
package leetCode01;
/**
* 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
* 说明:
* 1.必须在原数组上操作,不能拷贝额外的数组。
* 2.尽量减少操作次数。
* @author 汤小萌
*
*/
public class Demo10 {
public void moveZeros(int[] nums) {
// 相当于定义了两个指针
int slow = 0, fast = 0;
while(fast < nums.length) {
if(nums[fast] != 0) {
nums[slow] = nums[fast];
slow++;
fast++;
} else { // 一旦这个数组上的数字是0,那么fast指针就需要往前走
// slow指针停留在0这个位置,在等待着fast发现了非0的数字将0位置的slow指针覆盖掉
fast++;
}
}
// slow跟fast相差了多少,就说明这个数组有多少个0,在上面填充完元素之后,
// 就需要将娄底漏掉的0补上
for(int i = slow; i < nums.length; i++) {
nums[i] = 0;
}
}
}
参考:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
参考:leetcode
最后
以上就是微笑抽屉为你收集整理的leetcode+面试:给定一个数组,将所有 0 值移动到数组的末尾,同时保持所有非零元素的相对位置leetcode+面试:给定一个数组,将所有 0 值移动到数组的末尾,同时保持所有非零元素的相对位置的全部内容,希望文章能够帮你解决leetcode+面试:给定一个数组,将所有 0 值移动到数组的末尾,同时保持所有非零元素的相对位置leetcode+面试:给定一个数组,将所有 0 值移动到数组的末尾,同时保持所有非零元素的相对位置所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复