gpt4 book ai didi

java - 可整除和对

转载 作者:行者123 更新时间:2023-12-02 08:42:01 26 4
gpt4 key购买 nike

虽然看到这个问题会很奇怪,但我在继续我的编码之旅时确实需要理解一些核心概念。我在 Hackerrank 上遇到了一个问题,它类似于 DIVISIBLE SUM PAIRS

无论如何,我都会在这里给出问题陈述:

问题陈述

给定一个数组,我们必须找到可被给定数字 k 整除的对的数​​量,并且还有一个条件,即:这些对中的 arr[i] < arr[j]

示例

例如,ar=[1,2,3,4,5,6]k=5 。我们符合标准的三对是 [1,4] [2,3][4,6] .

代码

在发布我的代码之前,我想告诉您我的代码已经通过了所有测试用例,并且可以接受下一个挑战,但是我正在尝试解决一个小问题,在代码中。

static int divisibleSumPairs(int n, int k, int[] ar) {
int count = 0;
for(int i=0; i<ar.length; i++){
for(int j=i+1; j<ar.length; j++){
if(((ar[i]+ar[j])%k)==0){
if(i < j)
count++;
}
}
}
return count;
}

当我这样做时 if(i < j) count++ ,它给了我正确的结果,但是一旦我这样做 if(ar[i] < a[j]) count++ ,据说它给了我一个错误的答案。

任何人都可以帮我解决这个问题,比如剩下的吗?因为我知道支票arr[i] < arr[j]应该给出正确的结果。我不想继续使用错误的知识。

编辑

自从我明白我做错了什么。我在代码中进行了一项编辑,即不以 1 启动内部循环,因为每次内部循环完成时它都会以 1 开始,然后再次运行。我感谢所有帮助我理清这一点并使我的概念足够强大以处理此类问题的人。

我个人感谢Mike 'Pomax' Kamermans , Ricola ,和xerx593消除了我的疑虑并为我提供了循环元素的核心概念。这对我以后会有帮助,我不会再重复那样的事情了。 :)

最佳答案

我刚刚检查了您的链接,问题陈述中给出的条件是

Find and print the number of (i,j) pairs where i < j and ar[i] + ar[j] is divisible by k.

这只是 unordered pairs 的数字总和可被 k 整除的元素的个数。

不管你怎么写

there is one more condition to it, which is : the arr[i] < arr[j] from those pairs.

我好像你误解了这个问题。它解释了为什么 i<j条件有效,而 arr[i] < arr[j]没有。

<小时/>

现在您知道您只需要无序对,无需迭代 j来自1ar.length 。既然你需要j > i ,每j之间1i (包括在内)是没有用的。您可以将代码简化为:

static int divisibleSumPairs(int n, int k, int[] ar) {
int count = 0;
for(int i=0; i<ar.length-1; i++){
for(int j=i+1; j<ar.length; j++){
if(((ar[i]+ar[j])%k)==0){
count++;
}
}
}
return count;
}

关于java - 可整除和对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54187896/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com