一种将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));
}
}