把0-1串(只包含0、1)进行排序,可以交换任意两个位置的数,要求最后串中的0全部在左边,1全部再右边,问最少需要多少次交换?
分析:最左边的0和最右边的1都不用管
int ans=0,i=0,j=len-1;
while(i<j)
{
while(i<j&&arr[i] == 0) {i++;}
while(i<j&&arr[j] == 1) {j--;}
if(i<j) ans++;
i++;j--;
}
把0-1串(只包含0、1)进行排序,可以交换任意两个位置的数,要求最后串中的0全部在左边,1全部再右边,问最少需要多少次交换?
分析:最左边的0和最右边的1都不用管
int ans=0,i=0,j=len-1;
while(i<j)
{
while(i<j&&arr[i] == 0) {i++;}
while(i<j&&arr[j] == 1) {j--;}
if(i<j) ans++;
i++;j--;
}