数组的创建问题,和计算问题
1.数组长度为 days数值可能会很大,用哪个数组创建比较好?
2.创建一个数组,长度为days ,a+b为一个周期,前a个为0,b个为1。这个数组怎么创建?
举例:day = 20;a=3,b=2. 结果 [0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1]
LinkedList<Integer>[] List = new LinkedList[days]; //这么创建数组对吗?
int a = 3;
int b = 2;
int[] arr = new int[days];
for (int i = 0; i < days; i++) {
if (i < a) {
arr[i] = 0;
} else if ((i - a) % (a + b) < b) {
arr[i] = 1;
} else {
arr[i] = 0;
}
}
这段代码创建一个长度为days的数组arr。然后使用循环根据a和b的值设置数组中的元素:前a个元素设置为0;
第a到a+b-1个元素设置为1;
之后的元素循环设置为a个0然后b个1,直到设置完所有元素。例如days=20,a=3,b=2,最终结果为:
[0,0,0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1]所以动态数组+循环设置的方法可以很好地创建您需要的数组。
循环就可以了,
int[] arr = new int[20];
for(int i = 0; i < 20; i++)
{
for (int j = 0; j < a; j++)
arr[i] = 0;
for (int j = 0l j < b; j++)
arr[i] = 1;
}
很大是多大,包装类的内存大小会比基础数据类型占多点,考虑内存可以用基本数据类型的数组