thảo luận Leetcode mỗi ngày

  • Người tạo chủ đề Người tạo chủ đề Vipluckystar
  • Ngày bắt đầu Ngày bắt đầu
JavaScript:
var maxScore = function (s) {
    const n = s.length;

    let ans = -Infinity;
    let totalOne = 0;
    let totalZero = 0;
    for (const c of s) {
        if (c === '1') totalOne++;
    }
    for (let i = 0; i < n - 1; i++) {
        if (s[i] === '0') totalZero++;
        else totalOne--;
        ans = Math.max(totalZero + totalOne, ans)
    }
    return ans;
};
 
JavaScript:
var maxScore = function(s) {
    let count1 = 0;
    for(let i = 0; i < s.length; i++){
        if(s[i] === '1') count1++;
    }
    let max = 0;
    let leftZero = 0;
    for(let leftEnd = 0; leftEnd < s.length - 1; leftEnd++){
        if(s[leftEnd] === '0') leftZero++;
        else count1--;
        max = Math.max(max, leftZero + count1);
    }
    return max;
};
 
Tổng kết năm 2024 ạ :
(màu còi do lười nên chỉ nào sắp phỏng vấn mới ôn 1 tý)
1735710077750.png


Lần đầu join topic ạ, may hôm nay gặp bài Easy
Chắc các bác assmin Leetcode cũng nương tay cho đầu xuôi đuôi lọt :D
Python:
class Solution:
    def maxScore(self, s: str) -> int:
        l = len(s)
        left = [0] * (l + 1)
        right = [0] * (l + 2)
        for i in range(1, l + 1):
            left[i] = left[i - 1]
            if s[i - 1] == '0':
                left[i] += 1
        for i in range(l, 0, -1):
            right[i] = right[i + 1]
            if s[i - 1] == '1':
                right[i] += 1
        max = 0
        for i in range(1, l):
            sum = left[i] + right[i + 1]
            if sum > max:
                max = sum
        return max
 
Sửa lần cuối:
Java:
class Solution {
    public int maxScore(String s) {
        int max = 0;
        int n = s.length();
        char[] chars = s.toCharArray();
        int zero = 0, one = 0;
        for (char c : chars) {
            if (c == '1') one++;
        }
        for (int i = 0; i < n - 1; i++) {
            if (chars[i] == '0') zero++;
            else one--;
            max = Math.max(max, zero + one);
        }
        return max;
    }
}
 
năm mới nó vẫn giữ streak chứ ko reset luôn à :ops:
Java:
class Solution {
    public int maxScore(String s) {
        int left = 0, right = 0, res = 0;
        for(int i = s.length()-1; i>=0; i--)
            right+= s.charAt(i) - '0';
        for(int i = 0; i < s.length()-1; i++){
            right += '1' - s.charAt(i);
            left -= s.charAt(i) - '0';
            res = Math.max(res, right+left);
        }
        return res;
    }
}
 
PHP:
class Solution {
    /**
     * @param String $s
     * @return Integer
     */
    function maxScore($s) {
        $length = strlen($s);
        $max = 0;
        $one = 0;
        $zero = 0;

        for ($i=0; $i<$length; $i++) {
            if ($s[$i] == '1') $one++;
        }

        for ($i=0; $i<$length-1; $i++) {
            if ($s[$i] == '0') $zero++;
            else $one--;

            $max = max($max, $one + $zero);
        }

        return $max;
    }
}
 
Happy new year :love:
Java:
class Solution {
    public int maxScore(String s) {
        int numberOne = 0;
        for(int i = 0;i<s.length();i++){
            if (s.charAt(i) == '1'){
                numberOne++;
            }
        }

        int max = Integer.MIN_VALUE;
        int numberZero = 0;
        for(int i = 0;i<s.length() - 1;i++){
            if(s.charAt(i) == '0'){
                numberZero++;
            }
            if(s.charAt(i) == '1'){
                numberOne--;
            }
            max = Math.max(max, numberZero + numberOne);
        }

        return max;
    }
}
 
JavaScript:
function maxScore(s: string): number {
    let p = 1

    let zeroc = 0
    let onec = 0

    for (let i = 0; i < s.length; i++) {
        if (i < p) {
            if (s[i] === '0') {
                zeroc++
            }
        } else {
            if (s[i] === '1') {
                onec++
            }
        }
    }

    let res = zeroc + onec

    while (p < s.length - 1) {
        if (s[p] === '0') {
            zeroc++
        } else {
            onec--
        }

        res = Math.max(res, zeroc + onec)
        p++
    }

    return res
};
 
Python:
class Solution:
    def maxScore(self, s: str) -> int:
        left, right = 0, 0
        if s[0] == '0':
            left = 1
        for c in s[1:]:
            if c == '1':
                right += 1
        res = left + right
        print(left, right)
        for c in s[1:-1]:
            if c == '0':
                left += 1
            else:
                right -= 1
            res = max(res, left + right)
        return res
 
LC 1422 recursion
Java:
class Solution {
    public int maxScore(String s) {
        int rs[] = { 0 };
        cal(0, 0, s.length() - 1, s.toCharArray(), rs);
        return rs[0];
    }

    int cal(int cur, int l, int n, char[] ch, int[] rs) {
        boolean isZ = ch[cur] == '0';
        if (cur == n) return isZ ? 0 : 1;
        int nl = isZ ? l + 1 : l, r = cal(cur + 1, nl, n, ch, rs);
        rs[0] = Math.max(rs[0], nl + r);
        return isZ ? r : r + 1;
    }
}
 
Python:
class Solution:
    def vowelStrings(self, words: List[str], queries: List[List[int]]) -> List[int]:
        n = len(words)
        prefixSum = [0]*(n + 1)
        def query(left, right):
            return prefixSum[right + 1] - prefixSum[left]

        sumSofar = 0
        vowels = set(['a', 'e', 'i', 'o', 'u'])
        for i in range(n):
            if words[i][0] in vowels and words[i][-1] in vowels:
                sumSofar += 1

            prefixSum[i + 1] = sumSofar

        ans = []
        for left, right in queries:
            ans.append(query(left, right))

        return ans
 
Python:
class Solution:
    def vowelStrings(self, words: List[str], queries: List[List[int]]) -> List[int]:
        vowelsSet = set('aeiou')
        n = len(words)
        prefix = [0] * (n + 1)

        for i in range(1, n + 1):
            prefix[i] = prefix[i-1]
            if words[i - 1][0] in vowelsSet and words[i - 1][-1] in vowelsSet:
                prefix[i] += 1
        
        result = []
        for l, r in queries:
            result.append(prefix[r+1] - prefix[l])
        
        return result
 
Python:
class Solution:
    def vowelStrings(self, words: List[str], queries: List[List[int]]) -> List[int]:
        n = len(words)
        prefixSum = [0]*(n + 1)
        def query(left, right):
            return prefixSum[right + 1] - prefixSum[left]

        sumSofar = 0
        vowels = set(['a', 'e', 'i', 'o', 'u'])
        for i in range(n):
            if words[i][0] in vowels and words[i][-1] in vowels:
                sumSofar += 1

            prefixSum[i + 1] = sumSofar

        ans = []
        for left, right in queries:
            ans.append(query(left, right))

        return ans
cái set vowels ko cần tách thành list rồi init set đâu. python tự hiểu đó bác.
 
JavaScript:
var vowelStrings = function (words, queries) {
    const n = words.length;

    const set = new Set(['a', 'e', 'i', 'o', 'u'])
    let isVowelString = function (str) {
        return set.has(str[0]) && set.has(str[str.length - 1]);
    }

    const dp = [];
    for (let i = 0; i < n; i++) {
        dp[i] = (dp[i - 1] ?? 0) + (isVowelString(words[i]) ? 1 : 0);
    }

    const qs = queries.length;
    const ans = new Array(qs).fill(0);
    for (let i = 0; i < qs; i++) {
        const [l, r] = queries[i];
        ans[i] = dp[r] - (dp[l - 1] ?? 0);
    }
    return ans;
};
 
JavaScript:
function vowelStrings(words: string[], queries: number[][]): number[] {
    const vows = new Set(['u', 'e', 'o', 'a', 'i'])
    const counts = Array(words.length)

    let cur = 0
    for (const i in words) {
        const w = words[i]
        if (vows.has(w[0]) && vows.has(w[w.length - 1])) {
            cur++
        }

        counts[i] = cur
    }

    const res = []

    for (const q of queries) {
        res.push(counts[q[1]] - (counts[q[0] - 1] || 0))
    }

    return res
};
 
Java:
class Solution {
    final List<Character> chars = List.of('a', 'e', 'i', 'o', 'u');
    public int[] vowelStrings(String[] words, int[][] queries) {
        int[] res = new int[queries.length];
        int[] prefix = new int[words.length];
        int sum = 0;
        for (int i = 0; i < words.length; i++) {
            if (isVowelString(words[i])) sum++;
            prefix[i] = sum;
        }
        int i = 0;
        for (int[] query : queries) {
            int l = query[0];
            int r = query[1];
            if (l == 0) res[i] = prefix[r];
            else res[i] = prefix[r] - prefix[l - 1];
            i++;
        }
        return res;
    }

    private boolean isVowelString(String word) {
        return chars.contains(word.charAt(0)) && chars.contains(word.charAt(word.length() - 1));
    }
}
 
Sửa lần cuối:
JavaScript:
function vowelStrings(words: string[], queries: number[][]): number[] {
    const arr = new Array(words.length + 1).fill(0);
    const check = (s: string) => {
        return 'aeiou'.includes(s[0]) && 'aeiou'.includes(s[s.length - 1])
    }
    for (let i = 0; i < words.length; i++) {
        arr[i + 1] = arr[i] + (check(words[i]) ? 1 : 0);
    }
    const res = new Array(queries.length).fill(0);
    for (let i = 0; i < queries.length; i++) {
        const [l, r] = queries[i]
        res[i] = arr[r + 1] - arr[l]
    }
    return res;
};
 
Python:
class Solution:
    def vowelStrings(self, words: List[str], queries: List[List[int]]) -> List[int]:
        res = []
        vowels = set(["a","i","u","e","o"])
        prefix = []
        cnt = 0
        for w in words:
            if w[0] in vowels and w[-1] in vowels:
                cnt += 1
            prefix.append(cnt)
        for l,r in queries:
            preRight = prefix[r]
            preLeft = prefix[l - 1] if l > 0 else 0
            res.append(preRight - preLeft)
        return res
 

Thống kê chủ đề

Ngày tạo
Vipluckystar,
Người trả lời cuối
Holo code dạo,
Trả lời
7.737
Lượt xem
454.929
Quay lại
Lên đầu trang