题目:
1,一个数组只包含0和1,重新安排数组,使得 0 处于数组左半部分,1处于数组右半部分
2,一个整数数组,重新安排数组,使得奇数(odd)处于数组左半部分,偶数(even)处于数组有半部分
分析:
双指针问题,思路虽然简单,但时时要保证左指针小于右指针
package javainterview.array;
public class ZeroAndOne {
public static void reArrange(int[] arr){
if(arr==null || arr.length<=1)
return;
int left = 0;
int right = arr.length-1;
while(left < right){
while(arr[left]==0 && left < right)
left++;
while(arr[right]==1 && left < right)
right--;
if(left < right){
arr[left] = 0;
arr[right] = 1;
left++;
right--;
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {1,0,1,1,0,0};
reArrange(arr);
for(int item : arr){
System.out.print(item+" ");
}
}
}