[leetcode, JS] 1869. Longer Contiguous Segments of Ones than Zeros

mxxn·2023년 11월 22일
0

leetcode

목록 보기
128/198

문제

문제 링크 : Longer Contiguous Segments of Ones than Zeros

풀이

/**
 * @param {string} s
 * @return {boolean}
 */
var checkZeroOnes = function(s) {
    if(s.length === 1) {
        return s[0] === '0' ? false : true
    }
    let oneCount = 0
    let zeroCount = 0
    let oneStartIdx = 0
    let zeroStartIdx = 0
    let current = s[0]

    for(let i=0; i<s.length; i++) {
        if(s[i] !== current) {
            current = s[i]
            if(s[i] === '0') {
                zeroStartIdx = i
                oneCount = Math.max(oneCount, i-1-oneStartIdx)
            } else {
                oneStartIdx = i
                zeroCount = Math.max(zeroCount, i-1-zeroStartIdx)
            }
        }

        if(i === s.length-1) {
            s[i] === '0'
                ? zeroCount = Math.max(zeroCount, i-zeroStartIdx)
                : oneCount = Math.max(oneCount, i-oneStartIdx)
        }
    }
    return zeroCount < oneCount
    

};
  1. 연속된 1과 연속된 0을 구하기 위해 카운트할 변수, 시작점 인덱스 변수들을 각각 만들고
  2. 조건을 통해 카운트와 시작점을 바꾸는 방식의 풀이
  • Runtime 53 ms, Memory 42.71 MB

다른 풀이

/**
 * @param {string} s
 * @return {boolean}
 */
var checkZeroOnes = function(s) {
    let maxOnes = 0
    let maxZeros = 0
    let ones = 0
    let zeros = 0
    for (let i = 0; i < s.length; i++) {
        if (s[i] === '1') {
            ones++
            zeros = 0
            maxOnes = Math.max(maxOnes, ones)
            continue
        } 
        zeros++
        ones = 0
        maxZeros = Math.max(maxZeros, zeros)
        
    }
    return maxOnes > maxZeros
    

};
  1. 첫번째 풀이와 같은 방식의 풀이지만 좀 더 간결한 방식
  • Runtime 52 ms, Memory 42.45 MB
profile
내일도 글쓰기

0개의 댓글