首页 > 解决方案 > 查找数组 java 的最佳系数变量

问题描述

我正在尝试获取数组中所有元素的总和并将其乘以它的索引+1

然后我想将所有这些总和相加以创建一个总和

但是,如果当前索引总和不大于前一个总和,则不要将其添加到最终总数中,因为它是一个坏值(添加所有不坏的值)并返回结果

```java
import java.util.List;
import java.util.LinkedList;
public class Main {

public static int[] solve(int[] arr) {
    if (arr.length == 0)
        return new int[0];
    for (int i = 0; i < arr.length; i++)
        arr[i] *= i + 1;

    int start = 0;
    List<Integer> result = new LinkedList<>();

    for (int num: arr)
        if (num >= start) {
            result.add(num);
            start += num;
        }


    int[] found = result.stream().mapToInt(i -> i).toArray();
    return found;
}


public static void main(String[] args)

{

    int [] array = {-1,3,4};
    int total=0;
   int[] array2= solve(array);
    for(int i=0; i<array2.length; i++){
       // System.out.println(i+"\t"+array2[i]);
        total+=array2[i];
        System.out.println(total);
    }
}

```     

输出应该是 17 它是 18

标签: javaarrays

解决方案


因此,如果我没看错,您输入一个数字数组,将每个数字乘以其索引 + 1,然后删除任何不按升序排列的数字?我不确定问题是什么,但是您应该尝试将问题分解为步骤以使其更容易解决。

int[] arr = {6, 2, 4, 4, 5};

// Maybe this is what you were trying to do?
public static int[] solve(int[] arr) {
    if (arr.length == 0)
        return new int[0];
    for (int i = 0; i < arr.length; i++)
        arr[i] *= i + 1;

    int start = 0;
    List<Integer> result = new LinkedList<>();

    for (int num: arr)
        if (num >= start) {
            result.add(num);
            start += num;
        }
    return result.toArray();
}

推荐阅读