Java循环算法

标签 java algorithm

<分区>

我在编写 Java 程序方面需要帮助。我会解释我需要做什么,然后解释我有什么/我有什么烦恼 --

我需要编写一个程序,通过扫描器传递一些值。传入的值的数量是一个预先确定的变量。为了便于说明,我们将预定数量的传入数字称为“n”。

因此,对于 n 个数字,我必须在另一个预先确定的边界内返回最大数量的值。我将此边界称为 b。

例如: 如果 n = 5,则有五行输入,如果 b = 3,则数字相差不超过三。

如果这5行输入是——

1
6
4
3
1

那么,输出一定是4

最佳答案

我假设您知道如何将标准输入中的元素读取到数组中,并且只关注算法本身。 (假设您诚实地解决了这个问题,您已经编写了从标准输出读取数据的代码,并且可以轻松地使用我在下面提供的方法。)

对数组进行排序(升序),使“相似”的元素靠在一起。然后为每个元素计算 b 中它“上方”的元素数量;因为数组是排序的,所以这些都是距离元素最多 b 的元素。返回最大计数。

这是代码。

import java.util.Arrays;

public class Test {
    public static int count(int[] arr, int b) {
        int maxCount = 0, curCount = 0;
        Arrays.sort(arr);
        for (int i = 0; i < arr.length; ++i) {
            curCount = 0;
            for (int j = i; j < arr.length; ++j) {
                if (arr[j]-arr[i] <= b) {
                    ++curCount;
                } else {
                    break;
                }
            }
            maxCount = Math.max(maxCount, curCount);
         }
         return maxCount;
    }

    public static void main(String[] args) {
        int b = 3;
        int [] arr = {1,6,4,3,1};
        System.out.println("count: " + count(arr, b));
    }
}

它按预期打印 count: 4

关于Java循环算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36382473/

相关文章:

java - 我应该将serialVersionUID设置为什么?

java - 如何从Github项目编译java文件

java - 基本滑动窗口算法的Java实现

java - play framework 2 中的每个连接是如何处理的?

Java:在图像上应用几何变换的文本

java - 来自支持 bean 的非空数据列表在 jsf 形式中为空

c - 我需要一个用于定点数学库的快速 96 位对 64 位特定除法算法

algorithm - 在 O(log n) 时间内求解非齐次线性递归关系

algorithm - 有哪些学习回溯、分支定界和动态规划算法的好资源?

string - knuth morris pratt 算法中字符串中的特定字符最多与字符串进行比较的次数?