给定一个随机排列的 0 和 1 数组,您需要将数组中的 0 和 1 分开。
例如:
arr[] = {0,1,0,0,1,1,1,0,1}
Array after separating odd and even numbers :
{0,0,0,0,1,1,1,1,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
。left < right
,交换 arr[left]
和 arr[right]
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 1
Array after separating 0's and 1's :
0 0 0 0 1 1 1 1 1
===========================
Solution 2
Array after separating 0's and 1's :
0 0 0 0 1 1 1 1 1
我有一个像这样的麻木数组: 我不明白: : 因为我认为两者应该给出完全相同的结果?我的意思是后面的应该只代表第一个元素,对吗?那么,两者到底有什么区别?
我想有一个随机列表,其中1的出现率为10%,其余项目为零。这个列表的长度是1000。我希望这些值以随机顺序排列,以便它们之间有一个可调整的最小距离。例如,如果我选择一个值3,列表将如下所示: 实现这一点最优雅的方法是什么? 编辑我被要求提供更多的信息并表现出一些努力。 这是一项研究,其中0表示一种刺激,1表示另一种刺激,我们希望刺激类型1之间有一个最小距离。 到目前为止,我通过以下方式实现了这一目
我得到以下错误 警告:mysqli_error()只需要1个参数,给定0 问题出在代码的这一行: 整个代码是 包含的文件有以下一行
我想通过在Python中给出一个介于0和1之间的种子来生成固定随机数列表。例如,l=[0.1,0.5,0.6,0.9,0.75]。我可以通过使用random.random()得到这个。但每次它都给出一个新的随机数列表。我想通过给一些种子来解决它。 我怎么能那么做。提前感谢!
本文向大家介绍ActionScript 3 0到1之间的随机数,包括了ActionScript 3 0到1之间的随机数的使用技巧和注意事项,需要的朋友参考一下 示例 产生介于0(含)和1(不含)之间的均匀分布的随机数 输出示例: 0.22282187035307288 0.3948539895936847 0.9987191134132445
需要帮助使用随机数1-10填充数组,而不使用0。-创建一个包含100个整数的数组。我尝试过;但这会抛出每个数字的计数。 我需要在作业中做什么: < li >用1到10之间的随机数填充数组。(不为零) < li >确定数组中所有数字的平均值。 < li >计算100个数字的数组中每个数字出现的次数。这样做的第二个数组的大小为10个整数,并根据您在100个整数的数组中找到的重复数递增数组的每个元素。