LintCode之移动零

Posted echo

tags:

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

题目描述:

 

分析:由于要使非零元素保持原数组的顺序,我只能想出在找到一个0时,逐个移动数组元素使得后一个元素覆盖前一个元素,再将这个0移到后头去。

我的代码:

 1 public class Solution {
 2     /*
 3      * @param nums: an integer array
 4      * @return: 
 5      */
 6     public void moveZeroes(int[] nums) {
 7         // write your code here
 8         //当数组为空时直接返回
 9         if(nums.length == 0) {
10             return;
11         }
12         boolean b = true;
13         //判断数组是否全为0,若是,则直接返回
14         for(int i=0; i<nums.length; i++) {
15             if(nums[i] != 0) {
16                 b = false;
17             }
18         }
19         if(b == true) {
20             return ;
21         }
22         
23         int k = nums.length-1;
24         int i = k;
25         while(i >= 0) {
26             //从后往前找元素值为0的数
27             while(i>=0 && nums[i]!=0) {
28                 i--;
29             }
30             if(i >= 0) {
31                 int temp = nums[i];
32                 for(int j=i; j<k; j++) {
33                     nums[j] = nums[j+1];
34                 }
35                 nums[k] = temp;
36                 k--;
37             }
38         }
39     }
40 }

 

以上是关于LintCode之移动零的主要内容,如果未能解决你的问题,请参考以下文章

[LintCode] Move Zeroes 移动零

LintCode 2. 尾部的零

[LintCode] Trailing Zeroes 末尾零的个数

从零开始配置vim(27)——代码片段

从零开始配置vim(27)——代码片段

从零开始配置vim(27)——代码片段