【问题标题】:Max in a matrix矩阵中的最大值
【发布时间】:2014-05-02 02:58:07
【问题描述】:

您好,我是一名 java 初学者,我有一个小问题

假设我有一个矩阵

1 0 1
0 2 0
3 2 1

Java 中是否有内置方法可以输出数字 3(最大值)及其坐标?

如果不是那么我认为matlab可能已经宠坏了我嘿嘿

谢谢

【问题讨论】:

  • 没有特定的 java 库。所以搜索任何外部库,如commons-math
  • 图书馆是什么意思?这是否意味着我必须 dl 代码并将其添加到我的方法库中,如果这听起来很愚蠢 =/
  • Java 并没有真正内置矩阵,而不仅仅是二维数组。
  • @arunmoezhi commons-math 真的可以这样做吗?

标签: java arrays methods max


【解决方案1】:

这取决于“矩阵”的实现。就我在 Java 方面的经验(以及简短的 Google 搜索)而言,没有“标准”矩阵类,所以我假设您使用的是多维数组 (int[][] matrix) 或某些第 3 方库。

在前一种情况下,Java 确实提供了查找 Collection 最大值的方法。我认为它可以以某种方式应用于多维数组; 然而它涉及将数组转换为集合,as this SO post points out,如果您只需要最小/最大值,那么效率非常低。相反,您应该自己编写 min/max 函数。要么它对你来说是微不足道的并且需要很少的努力,要么你会从中学到一些东西。

如果您使用的是 3rd 方库,例如 JAMA,那么它完全取决于该库的实现,我建议您查阅其文档或源代码。

【讨论】:

    【解决方案2】:

    这里有一些代码可以做到最大。

        public FunRun()
            {
                int[][] array = { { 1, 1, 2 }, { 1, 0, 3 }, { 0, 2, 1 } };
                System.out.println(max(array, 3, 3));
            }
    
        Integer max(int[][] array, int rows, int cols)
            {
                Integer result = null;
                for (int row = 0; row < rows; row++)
                    {
                        for (int col = 0; col < cols; col++)
                            {
                                if (result == null || result < array[row][col])
                                    {
                                        result = array[row][col];
                                    }
                            }
                    }
                return result;
            }
    

    【讨论】:

    • 对不起,但是在这一行: if (result == null || result
    • 这是java中的逻辑或。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    相关资源
    最近更新 更多