当前位置: 首页 > 知识库问答 >
问题:

返回数组中从最小到最大的三个具有相同差值的整数

姬泰
2023-03-14

所以,我想插入一个数组,然后按最大到最小的顺序返回3个数,每两个数之间的差值相同。

2 3 7 9 12. 
2 7 12 because 2+5=7, 7+5=12. 

下面的代码是我的尝试。我为循环做了3个

    null

所以:(第一个数字-第二个数字)=(第二个数字-第三个数字)

public static void main(String[] args) {
    int n;
    int num1;
    int num2;
    int num3;
    int dif;

    Scanner scan = new Scanner(System.in);
    
    System.out.print("How many numbers do you want to choose from? ");
    n = scan.nextInt();
    
    int nums[] = new int[n];
        
    System.out.println("Please input the integers: ");

    for (int i=0; i<n ;i++){
        nums[i] = scan.nextInt();
    }
    
    System.out.println(" ");
    
    for (int i=0; i<n; i++){
        
        for (int j=i+1; j<n; j++){      //compare element i to the rest of the array
            
            if(nums[j]<= nums[i]){  //if a num at j is smaller than num at i,
                num3 = nums[i];     //then num3 is num at i
                num2 = nums[j];     //and num2 is num at j
                dif = num3 - num2;  //find the difference
                
                for(int k=i+j+1; k<n; k++){ 
                    if(num2 == (nums[k]+ dif)){ //if num2 is num at k + difference
                    num1 = nums[k];             //then num1 must be num at k
                    }   
                }
            }
        }
    }
    System.out.print(num3); //This is the effort printing them out
    System.out.print(num2); //But for some reason I couldn't
    System.out.print(num1); //even I initialized num3,2,1 outside of the for loop
    
    scan.close();   //closing the scanner object
}

共有1个答案

冯德宇
2023-03-14

如果您正在寻找更快的一个,这将与两个fors一起工作。

public static void main(String[] args) throws Exception {
    List<Integer> integers = Arrays.asList(1, 3, 5, 9, 17);
    Map<String, Integer> differenceMap = new HashMap<>();

    for (int i = 0; i < integers.size(); i++) {
        int first = integers.get(i);

        for (int j = i + 1; j < integers.size(); j++) {
            int second = integers.get(j);

            int difference = second - first;
            int next = difference + second;
            if (integers.contains(next)) {
                differenceMap.put(first + " - " + second + " - " + next, difference);
            }
        }
    }

    differenceMap.keySet().forEach(System.out::println);

}
 类似资料:
  • 问题内容: 我试图从我的int数组返回两个最大的整数。我能够返回最大和最小的罚款,但无法获得返回两个最大罚款的算法。任何帮助在这里都将不胜感激。 请原谅我的代码中的任何错误。这是一次练习,问题取自去年大学的考试材料。 这是我的代码: 问题答案: 你可以写

  • 本文向大家介绍返回JavaScript中数组的最小值和最大值的函数,包括了返回JavaScript中数组的最小值和最大值的函数的使用技巧和注意事项,需要的朋友参考一下 问题 我们需要编写一个接受一个数组并返回另一个数组的JavaScript函数,该数组的第一个元素应该是输入数组的最小元素,第二个应该是输入数组的最大元素。 示例 以下是代码- 输出结果

  • 我有一个Java计算问题,其中我得到了一个整数数组: 例如: 3-2-10 0 1 我应该计算出可以从这些整数形成的最小整数和最大三元组是什么。(在这种情况下,最小值=-30,最大值=60) 我最初认为最大值总是正的,最小值总是负的。 因此, 我最初的算法是: 扫描数组并取出其中的3个最大元素,存储到数组中。 同时,取出里面的3个最小的元素,存储到另一个数组中。 通过不等式,我们可以推断如下: v

  • 计算newArr数组所有对象中arr二维数组,比较后返回其中的[[最小值,最小值],[最大值,最大值]]; 要这种结果[[39.867638888888884, 115.39333333333333], [50.97152777777777, 120.31527777777778]]

  • 问题内容: 从如下所示的数组中,如何获取数组中最大值的索引。对于下面的数组,期望的结果将为‘11’。 问题答案: 我的解决方案是: 注意: 这样,您可以检索与给定 最大值 相关的 每个键 。 __ 如果您只对 其中一个键 感兴趣,只需使用 $ maxs [0]

  • 问题内容: 我正在寻找python中整数的最小值和最大值。例如,在Java中,我们有和。python中是否有类似的东西? 问题答案: Python 3 在Python 3中,此问题不适用。普通int类型是无界的。 但是,你实际上可能正在寻找有关当前解释器的字长的信息,在大多数情况下,该信息将与机器的字长相同。该信息在Python 3中仍以形式提供,这是一个有符号的单词可以表示的最大值。等效地,它是