重新安排0和1

题目:

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+" ");
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值