[leetcode, JS] 228. Summary Ranges

mxxn·2023년 9월 12일
0

leetcode

목록 보기
73/198

문제

문제 링크 : Summary Ranges

풀이

/**
 * @param {number[]} nums
 * @return {string[]}
 */
var summaryRanges = function(nums) {
    if(nums.length === 1) return [`${nums[0]}`]
    if(nums.length === 0) return []
    let chk = [nums[0], nums[0]]
    let result = []
    for(let i=1; i<nums.length; i++) {
        if(nums[i] !== chk[1] +  1) {
            chk[0] === chk[1] ? result.push(`${chk[0]}`) : result.push(chk.join('->'))
            chk = [nums[i], nums[i]]
        } else{
            chk[1] = nums[i]
        }

        if(i === nums.length-1) {
            chk[0] === chk[1] ? result.push(`${chk[0]}`) : result.push(chk.join('->'))
        }
    }

    return result;

};
  1. nums의 length가 0,1일 때는 조건 나눠서 return
  2. 시작값 chk를 설정하고
  3. for문을 돌며 연속되는 값인지 체크하여 result에 push
  • Runtime 54 ms, Memory 42.4 MB

다른 풀이

/**
 * @param {number[]} nums
 * @return {string[]}
 */
var summaryRanges = function(nums) {
    let res = [];
    let start = null;
    for (let i = 0; i < nums.length; i++) {
        if (start === null)
            start = nums[i];
        if (nums[i] === nums[i + 1] - 1)
            continue;
        if (nums[i] === start) {
            res.push(`${ start }`);
        } else {
            res.push(`${ start }->${ nums[i] }`);
        }
        start = null;
    }
    return res;
};
  1. 첫번째 풀이를 좀더 쉽게 만든 풀이
  • Runtime 53 ms, Memory 42.3 MB
profile
내일도 글쓰기

0개의 댓글