일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 코어 자바스크립트
- javascript
- 4주 프로젝트
- 타임어택
- 타입스크립트 올인원
- 정재남
- programmers
- 회고
- Async
- 렛츠기릿 자바스크립트
- 리트코드
- 리덕스
- 코드스테이츠
- 토익
- 타입스크립트
- js
- 파이썬
- 알고리즘
- 제로초
- 프로그래머스
- 백준
- codestates
- 리액트
- 손에 익히며 배우는 네트워크 첫걸음
- python
- 2주 프로젝트
- 자바스크립트
- til
- LeetCode
- SQL 고득점 Kit
Archives
- Today
- Total
Jerry
[day21][leetcode] 209. Minimum Size Subarray Sum 본문
Problem Solving/Algorithm 문제 풀기
[day21][leetcode] 209. Minimum Size Subarray Sum
juicyjerry 2024. 3. 4. 22:50반응형
/**
* @param {number} target
* @param {number[]} nums
* @return {number}
*/
var minSubArrayLen = function(target, nums) {
let left = 0;
let shortedLen = Infinity;
let sum = 0;
for (let right = 0; right < nums.length; right++) {
sum += nums[right];
while (sum >= target) {
shortedLen = Math.min(shortedLen, right - left + 1);
sum -= nums[left];
left++;
}
}
console.log(shortedLen);
return shortedLen === Infinity ? 0 : shortedLen;
};
Minimum Size Subarray Sum
TRY 1: FAILED
/**
* @param {number} target
* @param {number[]} nums
* @return {number}
*/
var minSubArrayLen = function(target, nums) {
// sorting like desc
// nested loop for sum of each element
// comparing sum and target
// if sum >= target: cnt++
// let set = new Set(nums);
// let duplicated = [...set].sort((a, b) => b - a);
let duplicated = nums.sort((a, b) => b - a);
// let duplicated = nums;
let len = duplicated.length;
let result = [];
console.log('duplicated ---> ', duplicated);
for (let i = 0; i < len; i++) {
let tempArr = [];
let sum = duplicated[i];
console.log('\nresult ---> ', result);
if (sum >= target) {
result.push(1);
continue;
}
tempArr.push(duplicated[i]);
for (let j = 0; j < len; j++) {
if (i !== j) {
console.log('j ---> ', j);
console.log('tempArr (0) ---> ', tempArr);
sum += duplicated[j];
tempArr.push(duplicated[j]);
if (sum >= target) {
console.log('tempArr (1 - 1) ---> ', tempArr);
console.log('tempArr (1 - 2) ---> ', tempArr);
break;
}
}
}
console.log('tempArr (2) ---> ', tempArr);
if (tempArr.length > 1 && sum >= target) {
result.push(tempArr.length);
}
}
console.log('result ---> ', result);
if (result.length === 0) result.push([]);
let min = Math.min(...result);
console.log('min ---> ', min);
return min;
};
SOLUTION 1
/**
* @param {number} target
* @param {number[]} nums
* @return {number}
*/
var minSubArrayLen = function(target, nums) {
let left = 0;
let shortedLen = Infinity;
let sum = 0;
for (let right = 0; right < nums.length; right++) {
sum += nums[right];
while (sum >= target) {
shortedLen = Math.min(shortedLen, right - left + 1);
sum -= nums[left];
left++;
}
}
console.log(shortedLen);
return shortedLen === Infinity ? 0 : shortedLen;
};
반응형
'Problem Solving > Algorithm 문제 풀기' 카테고리의 다른 글
[day22][leetcode] 209. Minimum Size Subarray Sum (0) | 2024.03.06 |
---|---|
[day22][leetcode] 167. Two Sum II - Input Array Is Sorted (0) | 2024.03.06 |
[프로그래머스/파이썬]문자열 출력하기 (0) | 2023.10.30 |
[백준][python]11720_숫자의 합 (0) | 2023.02.20 |
[백준][python]11654_아스키코드 (0) | 2023.02.20 |