第十三个算法-移动0

Posted liutian1912

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十三个算法-移动0相关的知识,希望对你有一定的参考价值。

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

示例:

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

说明:

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

 

思路:

1,头一看,思路很简单,直接后移就可以了。判断一下数据,如果为0 就循环向后移动。

2,思路也对,就是判断少了,如果连续两个0呢?立马歇菜。

代码:

public void moveZeroes(int[] nums) {
int i ,y =0;

for (i =0; i <nums.length ; i++) {
if (nums[i] != 0) {
nums[y] = nums[i];
y++;
}
}
if(y != nums.length){
for (int j = y; j <nums.length ; j++) {
nums[j] = 0;
}
}
}


最后一个小时的时间没有写出来,后来想想不能如此的耽误时间了,这本来就是简单的算法,为什么我做的如此困难,参考了别人的思路,然后写出了上面的代码。头疼。不会更笨了吧。

















以上是关于第十三个算法-移动0的主要内容,如果未能解决你的问题,请参考以下文章

以下代码片段的算法复杂度

python数据结构与算法第十二天快速排序

从搜索文档中查找最小片段的算法?

华为OD机试 - 单词反转(JavaScript) | 机试题算法思路 2023

将前缀和后缀相同的文件移动到同一个目录的算法设计及C代码实现

C语言100个经典算法源码片段