> 웹 프론트엔드 > JS 튜토리얼 > 최대 합계로 하위 배열의 크기를 계산하는 JavaScript 프로그램

최대 합계로 하위 배열의 크기를 계산하는 JavaScript 프로그램

王林
풀어 주다: 2023-09-15 22:29:04
앞으로
1259명이 탐색했습니다.

JavaScript 程序计算具有最大和的子数组的大小

최대 및 하위 배열 크기를 찾는 JavaScript 프로그램은 프로그래밍 분야, 특히 웹 개발에서 흔히 발생하는 문제입니다. 문제 설명에는 주어진 1차원 정수 배열에서 최대 합을 갖는 연속 하위 배열을 찾는 것이 포함됩니다. 이는 최대 하위 배열 문제라고도 합니다. 이 문제를 해결하면 재무 분석, 주식 시장 예측, 신호 처리 등 다양한 애플리케이션에 유용합니다.

이 기사에서는 JavaScript를 사용하여 최대 합계를 위한 하위 배열의 알고리즘과 크기를 살펴보겠습니다. 먼저 문제를 자세히 논의한 다음 JavaScript 프로그래밍 언어를 사용하여 단계별 솔루션을 개발해 보겠습니다. 그럼 시작해 볼까요!

문제 설명

정수 배열이 주어지면 최대 합으로 하위 배열의 길이를 찾아야 합니다.

예를 들어 정수 배열이 있다고 가정합니다: [1, -2, 1, 1, -2, 1], 가장 큰 하위 배열은 [1, 1]이고 합계는 2입니다. 끝 인덱스에서 시작 인덱스를 빼고 1을 더하면 이 하위 배열의 길이를 찾을 수 있습니다. 이 예에서는 시작 인덱스가 0이고 끝 인덱스가 1이므로 하위 배열의 길이는 2입니다.

또 다른 예는 모든 음의 정수로 구성된 배열입니다: [-2, -5, -8, -3, -1, -7]. 이 경우 가장 큰 하위 배열은 [-1]이 되고 합계는 -1이 됩니다. 모든 요소가 음수이므로 절대값이 가장 작은 하위 배열의 합이 가장 큽니다. 따라서 하위 배열의 길이는 -1입니다.

각 합이 동일한 최대 하위 배열이 여러 개 있을 수 있다는 점에 유의해야 합니다. 하지만 우리는 그중 하나만 찾으면 됩니다.

알고리즘

1단계

먼저 4개의 변수를 초기화합니다. "maxSum"은 "-Infinity", "currentSum"은 "0", "start"는 "0", end는 "0"입니다. 'maxSum'을 사용하여 지금까지 본 가장 큰 합계를 추적하고, 'currentSum'을 사용하여 현재 반복에 대한 하위 배열의 합계를 계산하고, 'start'를 사용하여 하위 배열의 시작 인덱스를 추적합니다. 하위 배열의 끝 인덱스를 추적하는 'end'입니다.

2단계

그런 다음 "for" 루프를 사용하여 배열을 반복합니다. 배열의 각 요소에 대해 "currentSum"에 추가합니다. 'currentSum'이 'maxSum'보다 크면 'maxSum'을 'currentSum'으로 업데이트하고 'end'를 현재 인덱스로 설정합니다.

3단계

다음으로 while 루프를 사용하여 "currentSum"이 "0"보다 작은지 확인합니다. 그렇다면 "currentSum"에서 "start"의 값을 빼고 "start"에 1을 더합니다. 이렇게 하면 항상 배열의 연속적인 하위 집합을 갖게 됩니다.

4단계

마지막으로 "currentSum"이 "maxSum"과 같은지, 현재 하위 배열의 크기가 이전 하위 배열보다 큰지 확인합니다. 그렇다면 "end"를 현재 인덱스로 업데이트합니다.

5단계

이 알고리즘의 시간 복잡도는 O(n)이고 공간 복잡도는 O(1)이므로 이 문제에 최적입니다.

다음 JavaScript 프로그램은 시작과 끝이라는 두 포인터를 사용하여 정수 배열에서 합이 가장 큰 연속 하위 배열을 찾는 문제를 해결하도록 설계되었습니다. 알고리즘은 최대 합계를 음의 무한대로 초기화하고, 현재 합계를 0으로, 시작 및 끝 인덱스를 0으로 초기화합니다. 현재 합계에 각 요소를 추가하고 현재 합계가 최대 합계보다 큰 경우 최대 합계와 끝 인덱스를 업데이트합니다. 현재 합계가 더 이상 음수가 아닐 때까지 하위 배열의 시작 부분에서 요소를 제거한 다음, 현재 합계가 최대 합계와 같고 하위 배열의 길이가 이전 하위 배열의 길이보다 길면 끝 인덱스를 업데이트합니다. 마지막으로 끝 인덱스에서 시작 인덱스를 빼고 1을 더하여 가장 큰 하위 배열의 길이를 반환합니다.

으아아아

더 나은 이해를 위해 몇 가지 예와 함께 출력을 살펴보겠습니다.

예 1

Input - 정수 배열이 주어지면 a[]= {1, -2, 1, 1, -2, 1}

출력 2

Description - 최대 합이 {1, 1}인 연속 요소가 포함된 하위 배열입니다. 따라서 길이는 2이다.

예 2

Input - 모든 음의 정수 배열이 주어지면 a[]= {-2, -5, -8, -3, -1, -7}

출력-1

설명 - 이 경우 최대 하위 배열은 [-1]이 되고 합계는 -1이 됩니다. 따라서 하위 배열의 길이는 -1입니다.

결론

합이 가장 큰 하위 배열의 크기는 프로그래밍에서 배열을 사용할 때 흔히 묻는 질문입니다. 이 문제를 해결하기 위한 알고리즘에는 배열을 반복하고 현재 합계와 지금까지 확인된 최대 합계를 추적하는 작업이 포함됩니다. JavaScript에서 이 알고리즘을 구현함으로써 주어진 정수 배열에 대해 가장 큰 합계를 갖는 하위 배열의 크기를 효율적으로 찾는 프로그램을 작성할 수 있습니다.

위 내용은 최대 합계로 하위 배열의 크기를 계산하는 JavaScript 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿