Algorithm(Javascript)
53. Maximum Subarray
물리하는 코딩
2022. 2. 13. 21:45
var maxSubArray = function(nums) {
let max = -100000000;
let current = 0
for(let i = 0; i < nums.length; i++) {
current = Math.max(current + nums[i], nums[i])
max = Math.max(max, current)
}
return max
// 이전 누적값과 현재값 더한거랑 현재값이랑 비교해서 max에다가 비교한다
};
배열내에서 부분집합 배열들중에서 요소들의 총합이 가장 큰값을 구하는 문제이다.
처음에는 이중 for문으로 모든 배열들의 요소들의 합을 비교하는 로직으로 했지만 O(n^2) 시간 복잡도로 인해서 시간초과됐다..
저 로직으로는 한번의 for문으로 시간 복잡도가 O(n)으로 빠르게 구할 수 있다.
변수 current는 누적값과 현재 배열인덱스요소값과 비교해서 둘 중 큰값을 반환한다.
그리고 current값과 이전 max중 비교해서 큰값을 다시 max에다가 할당해주는 로직이다.