通过比较两个数组找到最大的整数

Posted

技术标签:

【中文标题】通过比较两个数组找到最大的整数【英文标题】:Find the largest integer by comparing two arrays [duplicate] 【发布时间】:2015-12-14 14:42:42 【问题描述】:

我有两个不同大小的数组,比如a1[5]a2[7]。我想比较两个数组并找到最大的整数。例如

输入

a1 = 52,53,48,72,20
a2 = 28,12,73,21,33,44,88

输出应该类似于 a2, 88,其中 88 是最大数,a2 是最大数所在的数组。

我在 Google 中进行了搜索,但什么都没有。只想知道有没有可用的内置函数?或者给我一些逻辑来获得输出。

【问题讨论】:

为什么你不能循环遍历两个数组,有两个变量,一个存储找到的最大数字,另一个包含它来自的变量。 ***.com/q/1484347/1768232 的可能重复项(是的,我的票数不多) 找出每个数组中最大的 int 并比较它们... @durron597 我不这么认为我的问题是重复的。在发布此问题之前,我确实看到了您共享的链接,那是在单个数组中找到最大的数字。我的问题是在多个数组中。你还看到我的问题是重复的吗? @PadmanabhanVijay 你不知道如何使用这些信息来获得答案? 【参考方案1】:

这可能是从两个数组中找到最大整数以及最大数字所在的数组的一种方法。

private static void findTheLargestInteger(int[] arr1, int[] arr2) 
    Arrays.sort(arr1);
    Arrays.sort(arr2);
    if(arr1[arr1.length-1] > arr2[arr2.length-1])
        System.out.println("a1, "+ arr1[arr1.length-1]);
    else
        System.out.println("a2, "+ arr2[arr2.length-1]);


【讨论】:

【参考方案2】:

就逻辑而言:我建议您创建一个method,它采用array 并返回数组中的最大数字。你可以像这样调用这个函数两次:

int maxValueInFirstArray = maxValueInArray(int[] firstArray);
int maxValueInSecondArray = maxValueInArray(int[] secondArray);

然后您可以检查if statement 中的两个值来计算最大值。这不仅更短,而且易于阅读。至于函数 maxValueInArray() 的工作原理,我会留给你去寻找。我希望这会有所帮助:)

【讨论】:

【参考方案3】:

只需遍历两个数组,找到较大的值和它包含的数组;

Integer answer = Integer.MIN_VALUE;
Integer arr = 1;
Integer[] a1 = 1,2,4;
Integer[] a2 = 1,4,6,8;
for (Integer val : a1) 
   if (val > answer) 
      answer = val;
      arr = 1;
   

for (Integer val : a2) 
   if (val > answer) 
      answer = val;
      arr = 2;
   

System.out.println("a" + arr + "," + answer);

【讨论】:

【参考方案4】:

这应该会引导您朝着正确的方向前进:

public class Answer

    public double d;
    public int array;

    Answer(double d, boolean inFirstArray)
      if inFirstArray
        this.d = d;
        this.int = 1;
      
      else
        this.d = d;
        this.int = 2;
      
    







public Answer findLargestNumber(double[] a1, double[] a2)

  boolean inFirstArray = true;
  double biggestNumber = 0;

  for (double d : a1)
    if (d > biggestNumber)
      biggestNumber = d;
  

  for (double d : a2)
    if (d > biggestNumber)
      biggestNumber = d;
      inFirstArray = false;
    
   

  Answer answer = new Anwser(biggestNumber,inFirstArray);
  return answer;  

【讨论】:

以上是关于通过比较两个数组找到最大的整数的主要内容,如果未能解决你的问题,请参考以下文章

返回一个二维整数数组中最大子数组的和

求一个整数数组中最大子数组的和

返回一个整数数组中最大子数组的和(加强版)

在 O(n) 时间内找到数组中的 10 个最大整数

LeetCode 1460. 通过翻转子数组使两个数组相等 / 658. 找到 K 个最接近的元素 / 1464. 数组中两元素的最大乘积

LeetCode 1460. 通过翻转子数组使两个数组相等 / 658. 找到 K 个最接近的元素 / 1464. 数组中两元素的最大乘积