java - 我需要使用 java 在 2D 矩阵中找到第一个最大元素,但代码似乎不像我想要的那样工作。谁能帮我?
问题描述
- 如果有多个最大元素,我需要最大元素位置,然后打印第一个。
- 我的代码打印最大元素的位置,但不是第一个。
- 我不明白为什么最后一次迭代没有按我的预期工作。
请仅使用 Java 解决它。
import java.util.Scanner;
class Main {
public static void main(String[] args) {
// put your code here
Scanner sc = new Scanner(System.in);
// define lengths
int n = sc.nextInt();
int m = sc.nextInt();
// add length to matrix
int[][] matrix = new int[n][m];
// insert elements
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
matrix[i][j] = sc.nextInt();
}
}
// define max
int max = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (matrix[i][j] > max) {
max = matrix[i][j];
}
}
// System.out.print(i + " " + j);
}
// System.out.print(max + " ");
// print index of highest element
// int pos1 = 0;
// int pos2 = 0;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
if (matrix[i][j] == max) {
System.out.print(i + " " + j);
break;
}
// pos2 += 1;
break;
}
// pos1 += 1;
// break;
}
}
}
解决方案
不需要两次遍历矩阵。当您搜索最大值时,还要存储找到该最大值的矩阵坐标。代码示例:
import java.util.Scanner;
class Main {
public static void main(String[] args) {
// put your code here
Scanner sc = new Scanner(System.in);
// define lengths
int n = sc.nextInt();
int m = sc.nextInt();
// add length to matrix
int[][] matrix = new int[n][m];
// insert elements
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
matrix[i][j] = sc.nextInt();
}
}
// define max
int max = Integer.MIN_VALUE, row=0, col=0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (matrix[i][j] > max) {
max = matrix[i][j];
row=i;
col=j;
}
}
}
System.out.print("max: "+max + " is at: ");
System.out.print(col + " " + row); //indexes starting from zero
}
}
推荐阅读
- javascript - 此链接在脚本标签内表示什么?
- forms - 如何创建一个带有 url 输入的表单,该表单重定向到 pagespeed score/insights 或使用 ajax 显示它
- django - 关注/关注系统 Django - 如何检查用户是否已经关注
- gstreamer - 如何配置 gstreamer 多队列以确保我们从每个源中抓取相同数量的帧
- php - PHP安装:错误:无法切换模块的启用流
- python - 尝试匹配多个参数化测试时,pytest -k 表达式失败
- security - 原始代码的 SAST 更好或编译代码
- java - 是否有一种简化的方法可以从 rust 调用 java 函数?
- laravel - 在流明中获取未定义的函数 public_path() 错误
- javascript - 如何使用 express.js 将自定义标头添加到 socket.io 的响应中?