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

Bài cuối tháng quá xứng đáng

Python:
class Solution:
    def countSubarrays(self, nums: List[int], minK: int, maxK: int) -> int:
        l, minIdx, maxIdx = -1, -1, -1
        ans = 0
        for i, n in enumerate(nums):
            if n < minK or n > maxK:
                l, minIdx, maxIdx = i, -1, -1
                continue

            if n == minK:
                minIdx = i

            if n == maxK:
                maxIdx = i

            if minIdx >= 0 and maxIdx >= 0:
                ans += min(minIdx, maxIdx) - l

        return ans
 
Last edited:
Bài hôm nay các bác có thể cho em hỏi một xíu là ở example 1, tại sao fixed-bound không phải chỉ là [1,3,5] => count = 1 ạ? Nếu expected output là [1,3,5] và [1,3,5,2], vậy thì em nghĩ phải là [1,3,5], [1,3,5,2], [1,3,5,2,7], [1,3,5,2,7,5] => count = 4 chứ nhỉ?
 
Bài hôm nay các bác có thể cho em hỏi một xíu là ở example 1, tại sao fixed-bound không phải chỉ là [1,3,5] => count = 1 ạ? Nếu expected output là [1,3,5] và [1,3,5,2], vậy thì em nghĩ phải là [1,3,5], [1,3,5,2], [1,3,5,2,7], [1,3,5,2,7,5] => count = 4 chứ nhỉ?
nó cho maxK = 5 thì
[1,3,5,2,7], [1,3,5,2,7,5]
làm sao dc bác :amazed:
 
Các thím thường cố giải 1 bài bao lâu thì xem Solution? Gặp mấy bài hard này chày cối thì giải được mà tốn time quá :confused:
 
Các thím thường cố giải 1 bài bao lâu thì xem Solution? Gặp mấy bài hard này chày cối thì giải được mà tốn time quá :confused:
Thường thì 20~30 phút. Còn nếu ý tưởng tuông trào thì tối đa 1 tiếng để tránh việc mình tưởng là đang giải gần ra rồi nhưng thật ra là sai hoàn toàn.
 
Python:
class Solution:
    def lengthOfLastWord(self, s: str) -> int:
        length = 0
        for i in range(len(s)-1, -1, -1):
            if s[i] == ' ' and length == 0:
                continue
            if s[i] != ' ':
                length += 1
            else:
                break
        return length
 
Java:
class Solution {
    public int lengthOfLastWord(String s) {
        int res = 0;
        for(int i = s.length()-1; i>=0; i--){
            if(s.charAt(i) != ' '){
                res=1;
                int j = i-1;
                while(j >= 0 && s.charAt(j--) != ' '){
                    res++;
                }
                return res;
            }
        }
        return res;
    }
}
 
Những bài ntn mới thấy python rất sướng. tất nhiên là code ko tối ưu lắm, nhưng mà gõ nhanh :LOL:
Hoặc duyệt từ cuối, gặp space đầu tiên thì return cũng nhanh, nhưng dễ quá nhỉ :))
Python:
class Solution:
    def lengthOfLastWord(self, s: str) -> int:
        return len(s.split()[-1])

C++:
class Solution {
public:
    int lengthOfLastWord(string s) {
        int len = 0;
        for (int i = s.length() - 1; i >= 0; i--) {
            if (!isspace(s[i])) len++;
            else if (len != 0) break;
        }
        return len;
    }
};
 
Last edited:
Java:
class Solution {
    public int lengthOfLastWord(String s) {
        int ans = 0;

        for (int i = s.length() - 1; i >= 0; i--) {
            if (s.charAt(i) == ' ' && ans == 0) {
                continue;
            } else if (s.charAt(i) == ' ' && ans > 0) {
                return ans;
            }
            ans++;
        }

        return ans;
    }
}
 
Java:
public static int lengthOfLastWord(String str) {
    str = str.trim();
    int last = str.lastIndexOf(" ") + 1;
    return str.length() - last;
}
 
JavaScript:
var lengthOfLastWord = function(s) {
    if (!s.length) return 0;
    let i = s.length - 1;
    let count = 0;

    while (i >= 0) {
        if (count === 0 && s[i] === ' ') {
            i--;
            continue;
        }
        
        if (s[i--] === ' ')  return count;
        count++;
    }

    return count;
};
 
ticket co mua lai duoc hom qua ko a, mat badge luon ha?
Mua lại được đó bác, mất 70 đồng

Nay đọc thế nào lại thành tìm max length of words chứ ko phải last.
Submit lỗi ngơ ngác mãi :ROFLMAO::beat_brick:
C++:
class Solution {
public:
    int lengthOfLastWord(string s) {
        int re=1;
        int sta = 0;
        for(int end=1;end<s.size();++end)
        {
            if(s[end] != ' ' && s[end-1] == ' ') sta = end;
            if(s[end] == ' ' && s[end-1] != ' ') re =  end - sta;
            if(end == s.size()-1 && s[end] != ' ') re =end - sta+1;
        }
        return re;
    }
};
 
Java:
    public int lengthOfLastWord(String s) {
        int ans = 0;
        for(int i = s.length() - 1; i >= 0; i--){
            char value = s.charAt(i);
            if(value == ' ' && index != 0){
                break;
            }
            if(value != ' '){
                ans++;
            }
        }
        return ans;
    }
 
Python:
class Solution:
    def lengthOfLastWord(self, s: str) -> int:
        temp = -1
        end = -1
        for i in range(len(s) - 1, -1, -1):
            if s[i].isspace():
                if end > -1:
                    temp = i
                    break
            elif end == -1:
                end = i
        return end - temp
 
Back
Top