码迷,mamicode.com
首页 > 移动开发 > 详细

LintCode之移动零

时间:2017-11-06 21:14:47      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:move   lint   int   9.png   题目   .com   一个   als   元素   

题目描述:

技术分享

 

分析:由于要使非零元素保持原数组的顺序,我只能想出在找到一个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之移动零

标签:move   lint   int   9.png   题目   .com   一个   als   元素   

原文地址:http://www.cnblogs.com/zwxblog/p/7794936.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!