gpt4 book ai didi

java - 矩阵行中较大的值

转载 作者:行者123 更新时间:2023-12-02 00:51:52 27 4
gpt4 key购买 nike

如何获得矩阵行中两个较大的数字?

如果矩阵中其他行的数字较大,则无法显示。

例如,假设我有以下矩阵

int mat[][] ={{1,2,3}{4,5,6}{7,8,9}};

如果我从第 0 行搜索 2 个较大的数字,它应该返回索引 1 和 2(值 2 和 3)。

最佳答案

由于“矩阵”在 Java 中存储为数组数组的方式,问题简化为简单地在 int[]< 中查找最高 2 个元素(可能具有相等值)的索引.

因此解决方案非常简单:

public class Max2 { 
static int[] max2(int... nums) {
int high1v = Integer.MIN_VALUE;
int high2v = Integer.MIN_VALUE;
int high1i = -1;
int high2i = -1;
for (int i = 0; i < nums.length; i++) {
if (nums[i] >= high1v) {
high2v = high1v;
high2i = high1i;
high1v = nums[i];
high1i = i;
} else if (nums[i] >= high2v) {
high2v = nums[i];
high2i = i;
}
}
return new int[] { high1i, high2i };
}
}

这使用了数组的 1 遍 O(N) 线性扫描。 Integer.MIN_VALUE>= 比较的组合使其一切正常。 high1i 是第一个最高元素的索引,high2v 是第二个最高元素的值,等等

static void print(int[] arr) {
System.out.println(java.util.Arrays.toString(arr));
}
public static void main(String[] args) {
int[][] matrix = {
{ 1,2,3 }, // [2, 1]
{ 6,5,4 }, // [0, 1]
{ 8,7,9 }, // [2, 0]
{ 0,0,0 }, // [2, 1]
};

// print the indices of the maximum 2 elements in each row
for (int[] row : matrix) {
print(max2(row));
}

print(max2(matrix[1]));
// matrix[1] is the { 6, 5, 4 } row; prints "[0, 1]"

print(max2(Integer.MIN_VALUE, Integer.MIN_VALUE));
// works with varargs, and Integer.MIN_VALUE as real values
}

关于java - 矩阵行中较大的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2685946/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com