zoukankan      html  css  js  c++  java
  • 移动零

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

    示例:

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

    说明:

    1. 必须在原数组上操作,不能拷贝额外的数组。
    2. 尽量减少操作次数。
     1 void moveZeroes(int* nums, int numsSize){
     2     int i = 0;
     3     int j = 0;
     4     // 把非0的数字按顺序排满数组的前面,后面的不管
     5     // [0,1,0,3,12]-->[1,3,12,3,12]
     6     for(i = 0; i < numsSize; i++)
     7     {
     8         if(nums[i] != 0)
     9         {
    10             nums[j++] = nums[i];
    11         }
    12     }
    13     // 再把数组后面的所有数字置为0
    14     // [1,3,12,3,12]-->[1,3,12,0,0]
    15     while(j < numsSize)
    16     {
    17         nums[j++] = 0;
    18     }
    19 }

     这种解法巧妙的把当前数组当成另一个数组来存非0数字,根据大小再把剩余的数字置0,不可谓不巧妙!

    温故而知新;
  • 相关阅读:
    poj3411
    2241 排序二叉树
    1004 四子连棋
    Poj1482
    poj2046
    Poj3087
    poj3414
    php使用flock堵塞写入文件和非堵塞写入文件
    HTML样式以及使用
    高效程序猿的狂暴之路
  • 原文地址:https://www.cnblogs.com/yuxiang666/p/10828942.html
Copyright © 2011-2022 走看看