[LeetCode] 3364. Minimum Positive Sum Subarray

Chobby·3일 전

LeetCode

목록 보기
898/907

😎풀이

  1. 배열의 전체 합을 반환하는 헬퍼 함수 rangeSum 정의
  2. 시작 지점을 1씩 증가시키며 순회
    2-1. l부터 r까지의 범위 산정
    2-2. 현재 범위의 합을 기준으로 최소 합 갱신
  3. 최소 합이 0 이하일 경우 -1 반환
  4. 최소 합의 값 반환
function minimumSumSubarray(nums: number[], l: number, r: number): number {
    let minSum = Infinity
    for(let start = 0; start <= nums.length - l; start++) {
        for(let len = l; len <= r; len++) {
            const curRange = nums.slice(start, start + len)
            const sum = rangeSum(curRange)
            if(sum <= 0) continue
            minSum = Math.min(minSum, sum)
        }
    }
    if(minSum === Infinity) return -1
    return minSum
};

function rangeSum(nums: number[]) {
    return nums.reduce((acc, cur) => acc + cur, 0)
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글