평균 쌍 찾기

다중 포인터 질문 2



정렬된 배열과 목표 평균값이 주어지면 숫자 쌍이 목표 평균값에 도달하는지 확인하는 함수AveragePair를 작성하십시오.

생각:
  • 배열의 시작 부분에 하나의 포인터가 있음
  • 배열 끝에 포인터 하나
  • 배열이 정렬되기 때문에,
  • 계산된 평균 쌍이 예상 값보다 큰 경우
  • 왼쪽 포인터를 오른쪽으로 1위치 이동합니다
  • .

  • 계산된 평균 쌍이 예상 값보다 작은 경우
  • 오른쪽 포인터를 왼쪽으로 1위치 이동합니다
  • .


  • 반복 및 재귀 방법 모두 연습

  • // Recursive method
    function averagePair(sortedArr, avgNum){
        const arrLength = sortedArr.length;
        if (arrLength < 1) return false;
    
        function recurs(sortedArr, left, right) {
            if (left === right) return false;
    
            const avg = (sortedArr[left] + sortedArr[right]) / 2;
            if (avg === avgNum) return true;
            return (avg < avgNum) 
                ? recurs(sortedArr, left+=1, right)
                : recurs(sortedArr, left, right-=1);
        }
    
        return recurs(sortedArr, 0, arrLength - 1);
    }
    
    // Iterative method
    function AveragePair(sortedArr, avgNum){
        const arrLength = sortedArr.length;
        if (arrLength < 1) return false;
    
        let left = 0;
        let right = arrLength - 1;
        while(right > left) {
            const avg = (sortedArr[left] + sortedArr[right]) / 2;
            if (avg === avgNum) return true;
            if (avg < avgNum) {
                left++;
            } else {
                right--;
            }
        }
        return false;
    }
    

    좋은 웹페이지 즐겨찾기