我是靠谱客的博主 微笑抽屉,最近开发中收集的这篇文章主要介绍leetcode+面试:给定一个数组,将所有 0 值移动到数组的末尾,同时保持所有非零元素的相对位置leetcode+面试:给定一个数组,将所有 0 值移动到数组的末尾,同时保持所有非零元素的相对位置,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

给定一个数组,将所有 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 值移动到数组的末尾,同时保持所有非零元素的相对位置所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部