栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

给定一个随机排列的 0 和 1 数组,您需要将数组中的 0 和 1 分开

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

给定一个随机排列的 0 和 1 数组,您需要将数组中的 0 和 1 分开

解决方案1:
计算数组中 0 的数量。假设我们得到

X 0

一旦我们得到计数,将
X 0
放入数组,并将
(nX) 1
放入数组的后半部分。
java代码:

public static int[] separate0s1sSolution1(int arr[]) {  int count=0;  for (int i = 0; i < arr.length; i++) {   if(arr[i]==0)   {    count++;   }  }  for (int i = 0; i < count; i++) {   arr[i]=0;  }  for (int i = count; i < arr.length; i++) {   arr[i]=1;  }  return arr; }

时间复杂度:O(N)
解决方案2:
算法:

让我们说数组是 arr[]

  • 初始化两个索引变量,
    left=0 和 right=arr.length-1
  • 增加左变量直到得到
    1
  • 递减右边的变量直到你得到 0
  • 如果
    left < right
    ,交换
    arr[left]
    arr[right]
  • 最后,您会看到左侧为 0,右侧为 1。

java代码:

public static int[] separate0s1sSolution2(int arr[]) {  for (int i = 0; i < arr.length; i++) {   int left=0;   int right=arr.length-1;   while(arr[left]==0)   {    left++;   }   while(arr[right]==1)   {    right--;   }   if(left<right)   {    int temp=arr[left];    arr[left]=arr[right];    arr[right]=temp;   }  }  return arr; }

用于分隔数组中奇数和偶数的 Java 代码:

package org.arpit.java2blog;public class Separate0s1sMain { public static void main(String[] args) {  int arr[]={0,1,0,0,1,1,1,0,1};  System.out.println("Original Array: ");  for (int i = 0; i < arr.length; i++) {   System.out.print(arr[i]+" ");  }  arr=separate0s1sSolution1(arr);  System.out.println("n===========================");  System.out.println("Solution 1");  System.out.println("nArray after separating 0's and 1's : ");  for (int i = 0; i < arr.length; i++) {   System.out.print(arr[i]+" ");  }  System.out.println("n===========================");  System.out.println("Solution 2");  arr=separate0s1sSolution2(arr);  System.out.println("nArray after separating 0's and 1's : ");  for (int i = 0; i < arr.length; i++) {   System.out.print(arr[i]+" ");  }  } public static int[] separate0s1sSolution1(int arr[]) {  int count=0;  for (int i = 0; i < arr.length; i++) {   if(arr[i]==0)   {    count++;   }  }  for (int i = 0; i < count; i++) {   arr[i]=0;  }  for (int i = count; i < arr.length; i++) {   arr[i]=1;  }  return arr; } public static int[] separate0s1sSolution2(int arr[]) {  for (int i = 0; i < arr.length; i++) {   int left=0;   int right=arr.length-1;   while(arr[left]==0)   {    left++;   }   while(arr[right]==1)   {    right--;   }   if(left<right)   {    int temp=arr[left];    arr[left]=arr[right];    arr[right]=temp;   }  }  return arr; }}

当你运行上面的程序时,你会得到以下输出:

Original Array: 0 1 0 0 1 1 1 0 1 ===========================Solution 1Array after separating 0's and 1's : 0 0 0 0 1 1 1 1 1 ===========================Solution 2Array after separating 0's and 1's : 0 0 0 0 1 1 1 1 1


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/366877.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号