[leetcode]283. Move Zeroes
来源:互联网 发布:阿里云esc 代码部署 编辑:程序博客网 时间:2024/06/07 08:57
1. 题目内容
Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].Note:1. You must do this in-place without making a copy of the array.2. Minimize the total number of operations.
2. WA历程
第一眼看到这个题目没注意看要求,以为只要把0挪到后面就可以,于是想遇到一个0就把后面的元素换到这个位置来继续从这个元素开始,于是有了第一个答案
<pre name="code" class="java"> public void moveZeroes(int[] nums) { int len=nums.length; if(len<1) return; int count=0; for(int i=0;i<len;){ if(nums[i]==0){ count++; len--; nums[i]=nums[nums.length-count]; nums[nums.length-count]=0; } else i++; } }wrong answer了
然后想到可以用队列,遇到0就把遇到0的位置入队然后遇到非零的从队列中取出0的位置进行数值交换
第二次交答案还是错了
Compile Error
原因是忘了在提交的地方import队列类,gg
3. 教训
教训如下:
1.认真审题
2.别忘了交答案的时候引包
4. 最后使用的答案
import java.util.concurrent.LinkedBlockingQueue;public class Solution { public void moveZeroes(int[] nums) { int len=nums.length;if(len<1)return;LinkedBlockingQueue<Integer> loc =new LinkedBlockingQueue<>();try{ for(int i=0;i<len;i++){ if(nums[i]==0){ loc.put(i); } else{ if(!loc.isEmpty()){ nums[loc.take()]=nums[i]; nums[i]=0; loc.put(i); } } }}catch(InterruptedException e){} }}
5. 网投最佳答案
遍历一遍,先加入非0元素再补齐0
public void moveZeroes(int[] nums){ int index=0; for (int i=0;i<nums.length;i++){ if (nums[i]!=0) nums[index++]=nums[i]; } while(index<nums.length){ nums[index++]=0; } }
0 0
- 【LeetCode】283. Move Zeroes
- Leetcode 283. Move Zeroes
- LeetCode #283. Move Zeroes
- 283. Move Zeroes LeetCode
- LeetCode 283. Move Zeroes
- LeetCode 283. Move Zeroes
- LeetCode 283. Move Zeroes
- 【LeetCode】283. Move Zeroes
- leetcode 283. Move Zeroes
- leetcode 283. Move Zeroes
- LeetCode 283. Move Zeroes
- leetcode 283. Move Zeroes
- #leetcode#283. Move Zeroes
- LeetCode *** 283. Move Zeroes
- LeetCode 283. Move Zeroes
- LeetCode-283.Move Zeroes
- Leetcode 283. Move Zeroes
- leetcode 283. Move Zeroes
- java的xml读写
- Impala源码解析 - 了解Impala Catalog加载过程和到底加载了什么
- logback 的配置和使用
- EL表达式在设计模式应用(VO类+jsp+Sevlet)
- Linux 学习笔记 十三
- [leetcode]283. Move Zeroes
- 关于沟通的思考
- node.js Path模块
- 实现app第三方QQ授权登录
- CMake学习资料
- R Reproducible Research course project课程练习
- 欢迎使用CSDN-markdown编辑器
- 大数据问题总结!!!奥义丶破败斩
- 51中的矩阵键盘