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

  • Người tạo chủ đề Người tạo chủ đề _Gia_Cat_Luong_
  • Ngày bắt đầu Ngày bắt đầu
Trạng thái
Không mở để trả lời thêm.
Mr Tự Do không đi bỏ phiếu à
gFyIb2Z.png
sao vẫn ngồi code vậy
trong thớt này hình như có @vicejuniordev là có tịch rồi. Quá thượng đẳng :extreme_sexy_girl:
 
Java:
class Solution {
    public int minChanges(String s) {
        int n = s.length();
        char last = s.charAt(0);
        int cnt =1;
        int res =0;
        for(int i =1 ; i < n ; i++){
            if(s.charAt(i)==last){
                cnt++;
            }
            else{
                last = s.charAt(i);
                if(cnt%2==1){
                    res++;
                    cnt=2;
                }
                else cnt =1;
            }
        }
        return res;
    }
}
sao nhìn code mấy bác gọn quá v
YhCyC2n.png
đồng dâm đây rồi, code bẩn gang :sweat:
 
C++:
class Solution {
public:
    int minChanges(string s) {
        auto changes = 0; auto last_c = s.front(); auto odd = true;
        std::for_each(s.begin() + 1, s.end(), [&](const char& c) {
            if (last_c != c && odd) changes += 1;
            last_c = c; odd = !odd;
        });
        return odd ? changes + 1 : changes;
    }
};
 
Sửa lần cuối:
Java:
class Solution {
    public int minChanges(String s) {
        int[][] dp = new int[s.length()][2];
        for (int i = 0; i < dp.length; i++) Arrays.fill(dp[i], Integer.MAX_VALUE);
        dp[0][s.charAt(0) - '0'] = 0;
        dp[0][1 - (s.charAt(0) - '0')] = 1;
        for (int i = 1; i < s.length(); i++) {
            for (int j = 0; j < 2; j++) {
                if (s.charAt(i) != (char) (j + '0')) dp[i][j] = dp[i - 1][j] + 1;
                else dp[i][j] = dp[i - 1][j];
                if (i % 2 == 0) {
                    if (s.charAt(i) != (char) (j + '0')) dp[i][j] = Math.min(dp[i][j], dp[i - 1][1 - j] + 1);
                    else dp[i][j] = Math.min(dp[i][j], dp[i - 1][1 - j]);
                }
            }
        }
        return Arrays.stream(dp[s.length() - 1]).min().getAsInt();
    }
}
Sao ko ai làm bài này bằng dp nhỉ?
 
Java:
class Solution {
    public int minChanges(String s) {
        int ans = 0;
        int[][] dp = new int[s.length()][2];
        for (int i = 0; i < dp.length; i++) Arrays.fill(dp[i], Integer.MAX_VALUE);
        dp[0][s.charAt(0) - '0'] = 0;
        dp[0][1 - (s.charAt(0) - '0')] = 1;
        for (int i = 1; i < s.length(); i++) {
            for (int j = 0; j < 2; j++) {
                if (s.charAt(i) != (char) (j + '0')) dp[i][j] = dp[i - 1][j] + 1;
                else dp[i][j] = dp[i - 1][j];
                if (i % 2 == 0) {
                    if (s.charAt(i) != (char) (j + '0')) dp[i][j] = Math.min(dp[i][j], dp[i - 1][1 - j] + 1);
                    else dp[i][j] = Math.min(dp[i][j], dp[i - 1][1 - j]);
                }
            }
        }
        return Arrays.stream(dp[s.length() - 1]).min().getAsInt();
    }
}
Sao ko ai làm bài này bằng dp nhỉ?
mùa đông long phụng sum vầy à
ME1tJB0.png
 
Java:
class Solution {
    public int minChanges(String s) {
        int n = s.length();
        char last = s.charAt(0);
        int cnt =1;
        int res =0;
        for(int i =1 ; i < n ; i++){
            if(s.charAt(i)==last){
                cnt++;
            }
            else{
                last = s.charAt(i);
                if(cnt%2==1){
                    res++;
                    cnt=2;
                }
                else cnt =1;
            }
        }
        return res;
    }
}
sao nhìn code mấy bác gọn quá v
YhCyC2n.png

Java:
class Solution {
    public int minChanges(String s) {
        int[][] dp = new int[s.length()][2];
        for (int i = 0; i < dp.length; i++) Arrays.fill(dp[i], Integer.MAX_VALUE);
        dp[0][s.charAt(0) - '0'] = 0;
        dp[0][1 - (s.charAt(0) - '0')] = 1;
        for (int i = 1; i < s.length(); i++) {
            for (int j = 0; j < 2; j++) {
                if (s.charAt(i) != (char) (j + '0')) dp[i][j] = dp[i - 1][j] + 1;
                else dp[i][j] = dp[i - 1][j];
                if (i % 2 == 0) {
                    if (s.charAt(i) != (char) (j + '0')) dp[i][j] = Math.min(dp[i][j], dp[i - 1][1 - j] + 1);
                    else dp[i][j] = Math.min(dp[i][j], dp[i - 1][1 - j]);
                }
            }
        }
        return Arrays.stream(dp[s.length() - 1]).min().getAsInt();
    }
}
Sao ko ai làm bài này bằng dp nhỉ?
:surrender: :surrender: :surrender:
 

Tệp đính kèm

  • h66c2txpu3la1.jpg
    h66c2txpu3la1.jpg
    24,7 KB · Lượt xem: 26
Python:
class Solution:
    def minChanges(self, s: str) -> int:
        res = 0
        for i in range(0, len(s), 2):
            if s[i] != s[i + 1]:
                res += 1
        return res
 
Python:
class Solution:
    def minChanges(self, s: str) -> int:
        return sum(s[i] != s[i+1] for i in range(0, len(s)-1, 2))
 
Chạy n lần 1 function O(n) thì tổng độ phức tạp là n * n = n^2 thím
klq, cơ mà các bác cho em hỏi về complexity space với ví dụ em có một function với độ phức tạp là O(n) nhưng em gọi nó n lần ( không phải đệ quy ) thì complexity của cả thuật toán là bao nhiêu v
hmm nma k phải là nó lưu stack sau khi nó done thì xoá hả thím, r sau đó lưu lại tiếp vào stack. Giống như kiểu thay đổi dữ liệu trong một mảng nhưng vẫn là O(n) đó
thoát khỏi block là nó trả bộ nhớ, v nên chắc là On, bộ tính AI của leetcode thì nó cũng tính là On thôi.
 
thoát khỏi block là nó trả bộ nhớ, v nên chắc là On, bộ tính AI của leetcode thì nó cũng tính là On thôi.
em cũng nghĩ v nhưng hôm nó em vọc vạch thì không hiểu sao problem này của em lại bị MLE mà k phải TLE ( s.size() < 1000 ). nhưng khi em đổi sang tham chiếu thì lại chạy ok .....
1730817637790.png
 
Java:
class Solution {
    public int minChanges(String s) {
        int[][] dp = new int[s.length()][2];
        for (int i = 0; i < dp.length; i++) Arrays.fill(dp[i], Integer.MAX_VALUE);
        dp[0][s.charAt(0) - '0'] = 0;
        dp[0][1 - (s.charAt(0) - '0')] = 1;
        for (int i = 1; i < s.length(); i++) {
            for (int j = 0; j < 2; j++) {
                if (s.charAt(i) != (char) (j + '0')) dp[i][j] = dp[i - 1][j] + 1;
                else dp[i][j] = dp[i - 1][j];
                if (i % 2 == 0) {
                    if (s.charAt(i) != (char) (j + '0')) dp[i][j] = Math.min(dp[i][j], dp[i - 1][1 - j] + 1);
                    else dp[i][j] = Math.min(dp[i][j], dp[i - 1][1 - j]);
                }
            }
        }
        return Arrays.stream(dp[s.length() - 1]).min().getAsInt();
    }
}
Sao ko ai làm bài này bằng dp nhỉ?
Móe dùng DP mà sao lắm gạch thế :amazed:
 
C-like:
impl Solution {
    pub fn min_changes(s: String) -> i32 {
        let bytes = s.as_bytes();
        let mut count = 0;

        for chunk in bytes.chunks(2) {
            if chunk[0] != chunk[1] {
                count += 1;
            }
        }

        count
    }
}
 
Java:
class Solution {
    public int minChanges(String s) {
        int res = 0, count = 1;
        char lastCh = s.charAt(0);

        for (int i = 1; i < s.length(); i++) {
            if (s.charAt(i) != s.charAt(i - 1)) {
                if ((count & 1) != 0) {
                    res += 1;
                    i++;
                }
                count = 1;
            } else {
                count++;
            }
        }

        return res;
    }
}
 
Trạng thái
Không mở để trả lời thêm.

Thống kê chủ đề

Ngày tạo
_Gia_Cat_Luong_,
Người trả lời cuối
Vipluckystar,
Trả lời
17.755
Lượt xem
1.213.833
Quay lại
Lên đầu trang