zoukankan      html  css  js  c++  java
  • 初级算法-8.移动零

    题目描述:

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

    示例:
    输入: [0,1,0,3,12]
    输出: [1,3,12,0,0]
    说明:
    1.必须在原数组上操作,不能拷贝额外的数组。
    2.尽量减少操作次数。

    分析:不断将第一个0与它右边第一个非0交换位置,直到右边全为0

     1 class Solution {
     2     public void moveZeroes(int[] nums) {
     3        
     4         int i=0,j=0;//i:第一个0下标,j:对应右边第一个非0下标
     5         while(i<nums.length&&j<nums.length)
     6         {  
     7             if(i<j)//交换
     8             {   
     9                 nums[i]=nums[j];
    10                 nums[j]=0;
    11                 i++;j++;
    12             }
    13             else  
    14                 j=i+1; //从第一个0后开始找非0
    15         //找到第一个0
    16              while(i<nums.length)
    17              {
    18                 if(nums[i]==0)
    19                     break;
    20                 else
    21                     i++;
    22              }
              //找到第一个非0
    23 while(j<nums.length-1) 24 { 25 if(nums[j]==0) 26 j++; 27 else 28 break; 29 } 30 31 } 32 } 33 }
  • 相关阅读:
    防抖函数
    video.js汉化
    vscode 设置
    webpack配置
    寄生组合继承
    数组排序
    操作节点的方法
    vscde软件
    vue目录详解
    前端
  • 原文地址:https://www.cnblogs.com/hzhqiang/p/10771491.html
Copyright © 2011-2022 走看看