java - 查找数组 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
解决方案
因此,如果我没看错,您输入一个数字数组,将每个数字乘以其索引 + 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();
}
推荐阅读
- python - OR-tools 路由优化节点兼容性
- php - Laravel:在某些浏览器中下载的文件缺少扩展名
- javascript - Vue js - 转到页面时注册组件时出错
- node.js - 错误:在 adminbro 教程中找不到模块“tslib”
- kotlin - Setter 没有在 Kotlin 中赋值
- reactjs - 为什么每当我在 Reactjs 中重新加载我的仪表板组件时,我的登录组件会闪烁?
- php - 设置 WooCommerce 计费公司时禁用特定付款方式
- python - 如何更正此错误:OverflowError: cannot convert float infinity to integer
- c# - 在 C# 方法中将 PowerShell 参数从字典更改为字符串列表
- python - plotly dash chart:无法访问网站