如何知道一个数是否在一个组的x区间内

How to know if a number is in the x interval of a group

我对我需要的算法逻辑有疑问。

我有一组“y”个元素,我需要将它分成另一组大小为“x”的元素,然后找出第二组的“a”元素是否是在第一组的“a”组中。

例如,如果我有这 2 个组

A = {1,2,3,4}

B = {1,2,3,...,100}

100/4 是 25,所以如果 A=1 和 B=[1,25) 或 A=2 和 B=[25,50) 等等,函数应该为真

我如何制作算法来实现可变组大小? 我正在研究 java 但只要逻辑就足够了

提前致谢!

如果 y 可以被 x 整除,解决方案很简单:
x/y 将被视为我们应该考虑的间隔的 length。如果我们假设x=4y=100会有length == 25的四个区间:[1, 25], [26, 50], [51, 75], [76, 100] (请注意,这些间隔是封闭的,与您的问题相反,因为如果它们是开放的,则不会包含最后一个元素)。
因此,算法的输入将是 a(代表第 a 个区间)和 b(介于 1 和 y 之间的数字)。如果 b 在第 a 个区间内,则输出为 true.
b 在第 a 个区间当且仅当 b > length * (a-1)b <= length * a
下面的代码实现了一个函数f即使y % x != 0也能工作:在这种情况下,最后一个区间将包含更多元素(这些额外元素的数量是提醒y%x).

public static boolean f(int a, int b, int x, int y) {
    int length = y / x;

    int reminder = y % x;
    if (a != x) {
        reminder = 0;
    }

    return b > length * (a - 1) && b <= length * a + reminder;
}

您可以向该函数添加额外的控件。