数组的创建问题,和计算问题

数组的创建问题,和计算问题
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;
  1. 如果days的值很大,使用动态数组比较好,如ArrayList。因为静态数组长度固定,如果days很大会占用很多内存空间,而动态数组长度可以根据需要增长,节省空间。
  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;
}

很大是多大,包装类的内存大小会比基础数据类型占多点,考虑内存可以用基本数据类型的数组