java - 使用 for 循环组合 1 个数组的元素以创建一个新数组

标签 java arrays sorting for-loop

大家下午好,

我被分配了一个编程问题,我需要采用具有不同数量元素的单个数组,并配置一个新数组。

新数组将由前两个元素的和组成,后跟接下来的两个元素的和,依此类推。

如果原始数组有奇数个元素,则最后一个值将保持不变,而求和值在前面。

public static int[] collapse(int[] old) {
    int[] nNew = new int[old.length];        
    if(old.length%2 == 0){
        nNew = new int[old.length/2];    
        for(int i =0; i<nNew.length; i+=2) {                        
            int temp = old[i] + old[i+1];
            nNew[i] = temp;            
        }                   
    }
     //i tried to for loop to increment by 1 here, but it didn't work out.
     //I believe this is where my problem is.

    if(old.length%2 != 0) {
        nNew = new int[(old.length/2) +1];        
        for(int i =0; i<nNew.length-1; i++) {
            //I can't get an Odd number of array elements to increment by 2
            int temp = old[i] + old[i+1];
            nNew[i] = temp;
            nNew[nNew.length-1] = old[old.length-1];
        }                
    }    
    return nNew; 
}

调用示例包括:

collapse({7, 2, 8, 9, 4, 13, 7, 1, 9, 10}) 
expected: {9, 17, 17, 8, 19}
my result: {9, 0, 17, 0, 17}

collapse({1, 2, 3, 4, 5}) 
expected: {3, 7, 5} 
my result: {3, 5, 5}

最佳答案

不需要单独的循环。只需在同一循环内检查即可:

public static int[] collapse(int[] old) {
    int[] nNew = new int[(old.length + 1) / 2];
    for (int i = 0; i < old.length; i += 2) {
        nNew[i / 2] = old[i];
        if (i + 1 < old.length) {
            nNew[i / 2] += old[i + 1];
        }
    }
    return nNew;
}

关于java - 使用 for 循环组合 1 个数组的元素以创建一个新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37355609/

相关文章:

java - 如何获取数组数组的单个数组名称作为字符串

JavaScript数组数组不交换图像onClick

python - 将元组列表排序为多个列表的最佳方法和数据结构?

c - 使用 MPI 进行双调排序

java - 创建自定义异常并从服务器抛出它

java - 使用备用权限启动相机 Activity

java - 更改 JTextPane 中现有 HTMLDocument 内容的样式

python - 无法按名称访问列数据

c# - 如何在运行时知道属于结构体的 char 数组的长度

python - 按字典的值降序和键升序对字典进行排序