• 一种将0元素前置的实现方案


    package algorithm;

    import java.util.Arrays;

    /**
     * 将0元素前置
     * @author Administrator
     *
     */
    public class PreposeZero {

     public static void prepose(int[] pData){
      int count = 0;//0的个数
      int step = 0;
      for(int i=pData.length-1;i>0;i--){
       if(count > 0){
        /**
         * 判断0的个数与循环剩余次数,如果少于或者等于的话,全部置0
         */
        if(i+1 <= count){
         pData[i] = 0;
        }
        /**
         * 如果循环过程中,碰到0元素的处理
         */
        if(pData[i] == 0){
         count++;
        }
        /**
         * 如果循环中的前一个元素也是零的话,让步长给加1
         */
        if(pData[i-1]==0){
         step ++ ;
         count ++;
         continue;
        }
        pData[i+step] = pData[i-1];
       }else {
        if(pData[i] == 0){
         pData[i] = pData[i-1];
         count++;
        }
       }
      }
      
     }
     public static void prepose1(int[] pData){
      int num = 0;
      for(int i=pData.length-1;i>0;i--){
       if(pData[i] == 0){
        num ++ ;
       }
       else if(num >0){
        pData[i+num]= pData[i];
        pData[i] =0 ;
       }
       
      }
     }
     public  static void main(String[] args) {
      int[] pData = {0,1,72,3,0,5,9,0,0,6,51,0,3};
      prepose(pData);
      System.out.println(Arrays.toString(pData));
     }
    }

  • 相关阅读:
    11. Container With Most Water
    9. Palindrome Number
    375. 猜数字大小 II leetcode java
    leetcode 72 编辑距离 JAVA
    73. 矩阵置零 leetcode JAVA
    快速排序 JAVA实现
    63. 不同路径 II leetcode JAVA
    重写(override)与重载(overload)
    62 不同路径 leetcode JAVA
    leetcode 56 合并区间 JAVA
  • 原文地址:https://www.cnblogs.com/xinzhuangzi/p/4100453.html
Copyright © 2020-2023  润新知