나눌 합계 쌍

알록 :

이 이상한 것입니다하지만이 질문을 볼 수 있지만 난 정말 코딩의 나의 여행을 계속하는 동안 몇 가지 핵심 개념을 이해할 필요가 있습니다. 나는 같이 간다 Hackerrank에 문제가 : 나눌 SUM 쌍을

나는 어쨌든 문제는 여기에 문을 줄 것이다 :

문제 설명

우리는 주어진 번호로 나눌 쌍의 수 찾아야 배열 주어 K를 하고, 그것에 하나 개 이상의 조건이있다 : 도착 [I] <도착 [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 내부 루프 완료를 시작하고, 때문에. 나는 이것을 지우고 내 개념이 같은 질문을 다루는 충분히 강한을 나에게 도움이 모든 사람들에게 감사를 전합니다.

나는 개인적으로 감사 마이크 'POMAX'Kamermans , 리콜라xerx593을 내 의심을 삭제하고, 나에게 요소를 통해 반복의 핵심 개념을 제공합니다. 그것은 미래에 나에게 도움이 될 것입니다, 나는 다시 일을 반복하지 않을 것이다. :)

리콜라 :

난 그냥 당신의 연결 및 질문 문에 주어진 조건입니다 확인

찾아 I <J 및 AR [I] + AR [j]가 K로 나누어 (I, J) 쌍의 수를 출력한다.

수있는 간단하다 순서화 쌍 합 K로 나누어하는 소자는.

그러나 당신이 쓴

: 그것은 하나 개 이상의 상태가 도착 [I] <도착 [J] 그 쌍에서이.

당신이 질문을 오해 한 것처럼 보인다. 왜 '그리고 설명 i<j조건 반면 작동 arr[i] < arr[j]하지 않습니다.


지금 당신은 당신 만 정렬되지 않은 쌍을 반복 할 필요가 없습니다 필요가 있다고 알고 j에서 1을을 ar.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;
}

추천

출처http://43.154.161.224:23101/article/api/json?id=222225&siteId=1