我得到了一个列表
为此,我创建了一个帮助器来查找数组中的最小数字,然后在我的主函数中使用它,我希望在这里使用一个while循环运行到2,因为我需要2个最小的数字,并删除第一个(最小的)数字以查找下一个最小的数字,然后将它们添加到我创建的新数组中。
这是我的代码:
public static int countSorthelper(List<Integer> arr) {
int temp = 0;
int n = 0;
while(n <= 2){
for (int x = 0; x < arr.size(); x++){
for (int y = x+1; y < arr.size() && y <= x+y; y++){
if(arr.get(y) > arr.get(x)){
temp = arr.get(x);
n++;
}
}
}
}
return temp;
}
public static List<Integer> countSort(List<Integer> arr){
int n = 0;
List<Integer> j = new ArrayList<>();
while (n <= 2){
countSorthelper(arr);
arr.remove(countSorthelper(arr));
j.add(countSorthelper(arr));
n++;
}
return j;
}
当我尝试运行它时,输出由于运行时间过长而终止,我需要在我的代码中进行哪些更改?
无需排序,因为您可以在线性时间内执行此操作。代码应该是不言自明的,但基本上你需要对 min1
和 min2
进行比较,并酌情交换它们的值。您可以在输出中看到这一点。这些值将相等
,或者 min1 将是最小的,min2 是下一个
最小的
。
如果你想退货,你可以在记录中退货。
record Minimums(int smallest, int nextSmallest) {}
List<Integer> list = List.of(1,10,2,5,10,-2,22,3,-1);
Minimums mins = findSmallest(list);
System.out.println("\n"+mins);
min1
发生变化时,min 1
将替换min 2
min1
,但小于敏2
。因此,需要对敏2
进行独立测试
public static Minimums findSmallest(List<Integer> list) {
int min1 = Integer.MAX_VALUE;
int min2 = Integer.MAX_VALUE;
for (int val : list) {
if (val < min1) {
min2 = min1;
min1 = val;
} else if (val < min2) {
min2 = val;
}
System.out.printf("val = %2d : min1 = %2d, min2 = %2d\n", val,
min1, min2);
}
return new Minimums(min1, min2);
}
指纹
val = 1 : min1 = 1, min2 = 2147483647
val = 10 : min1 = 1, min2 = 10
val = 2 : min1 = 1, min2 = 2
val = 5 : min1 = 1, min2 = 2
val = 10 : min1 = 1, min2 = 2
val = -2 : min1 = -2, min2 = 1
val = 22 : min1 = -2, min2 = 1
val = 3 : min1 = -2, min2 = 1
val = -1 : min1 = -2, min2 = -1
Minimums[smallest=-2, nextSmallest=-1]
从提供的数组中返回 n 个最小元素。如果 n 大于或等于提供的数组长度,则返回原数组(按降序排列)。 结合使用Array.sort() 与展开操作符(...) ,创建一个数组的浅克隆,并按降序排列。 使用 Array.slice() 以获得指定的元素个数。 忽略第二个参数 n ,默认获取单个元素(以数组的形式)。 const minN = (arr, n = 1) => [...arr].sort
问题内容: 我试图从我的int数组返回两个最大的整数。我能够返回最大和最小的罚款,但无法获得返回两个最大罚款的算法。任何帮助在这里都将不胜感激。 请原谅我的代码中的任何错误。这是一次练习,问题取自去年大学的考试材料。 这是我的代码: 问题答案: 你可以写
从提供的数组中返回 n 个最大元素。如果 n 大于或等于提供的数组长度,则返回原数组(按降序排列)。 结合使用Array.sort() 与展开操作符(...) ,创建一个数组的浅克隆,并按降序排列。 使用 Array.slice() 以获得指定的元素个数。 忽略第二个参数 n ,默认获取单个元素(以数组的形式)。 const maxN = (arr, n = 1) => [...arr].sort
我对mongodb中的聚合概念相对陌生。在我的文档中,有一个数组。我尝试用$match,$unwind,$group来提取数组中有两个给定值的文档。我猜写上去没什么帮助..这是样品 文件: 从这些文档中,我需要提取一个具有“类:1”和“主题[”物理“,”英语“]的文档 所以,如果我正确地编写了查询(或聚合),我应该从上面提取第二个文档。 这是我所拥有的 好吧,上面的聚合没有给我任何反馈,所以我尝试
问题内容: 简介: 就我所能搜索到的而言,尚无此问题。 这是一个面试问题。 我什至没有专门寻找代码解决方案,任何算法/伪代码都可以使用。 问题: 给定一个整数数组及其大小,找到2个最小和的 非后续 元素(在数组中不能相邻)。另外,答案中不得包含第一个或最后一个元素(index 和)。解决方案还应该是 时间和空间的复杂性。 例如,当回答是,因为。 当答案为时,因为和不能选择的任何一个,因为处于数组的
问题内容: 我想返回数组的奇数,但是Eclipse似乎不接受我的返回码。我认为这需要返回整个数组,因为我将数组设置为方法的参数。如前所述,我需要传递一个数组并获取该数组的特定元素作为回报。即使我将该数组设为静态,如何返回单个元素? 编辑:好吧,这里是: 我知道这里可能存在多个错误,但我正在努力,不仅要返回奇数,还要将它们加在一起。 问题答案: 您的代码应如下所示: 这里的要点是方法返回类型,它应该