thảo luận [Học Tập] Topic thuật toán

  • Người tạo chủ đề Người tạo chủ đề unknowpc90
  • Ngày bắt đầu Ngày bắt đầu
bác giờ đang đi làm hay còn đi học vậy?
đang đi học fen à, đang chạy deadline sml
9NN5SUy.png
khi nào rảnh code thử câu này xem
hB8nmx5.png
 
Xem tệp đính kèm 729830
xin hướng giải bài này với mấy bác
Bài này dùng 1 mảng (tạm gọi là a) để lưu lại vị trí xuất hiện trước đó của mỗi chữ cái. Sau đó duyệt hết chuỗi, tại mỗi chữ cái trong chuỗi thì dựa vào mảng a để tính ra được độ dài của substring mà k có duplicate, cập nhật lại mảng a và cập nhật lại longest. dpt là 0(n)
 
Nay thấy topic này vắng quá. Nên mình sẽ share bài mình mới làm chiều nay.
https://leetcode.com/problems/powx-n/
Yêu cầu là implement hàm pow.
Đọc đề xong thấy bài này easy vkl, k hiểu sao lại là medium, nghĩ trong bụng bài này chắc done trong 1 nốt nhạc. Chỉ cần 1 vòng for chạy từ 0->n rồi nhân lại là xong. dpt là O(n) :D. Đến lúc submit thì bị timeout :beat_brick:.
Lúc đó ngồi nghĩ kỹ lại mới thấy bài này hoàn toàn có thể giải với đpt là O(logN) :p.
tại vì m^n = m^(n/2)*m^(n/2) như vậy mình chỉ cần tính m^(n/2) 1 lần thôi.
C++:
class Solution {
public:
    double myPow(double x, int n) {
        double result = 1;
        x = n > 0 ? x : 1/x;
        for (int i = 0; n != 0; i++){
            result *= n%2!=0 ? x : 1;
            n/=2;
            x = x*x;
        }
        return result;
    }
};
Bài này chắc là kinh điển, nên chắc nhiều anh em cũng từng làm qua rồi. :D
 
bài này easy chứ medium gì. tôi từng cho làm lúc phỏng vấn.
đứa nào dùng for loop từ 1 -> n 1 phát là tôi "thank you for your time" rồi mời về ngay lập tức.
Nay thấy topic này vắng quá. Nên mình sẽ share bài mình mới làm chiều nay.
https://leetcode.com/problems/powx-n/
Yêu cầu là implement hàm pow.
Đọc đề xong thấy bài này easy vkl, k hiểu sao lại là medium, nghĩ trong bụng bài này chắc done trong 1 nốt nhạc. Chỉ cần 1 vòng for chạy từ 0->n rồi nhân lại là xong. dpt là O(n) :D. Đến lúc submit thì bị timeout :beat_brick:.
Lúc đó ngồi nghĩ kỹ lại mới thấy bài này hoàn toàn có thể giải với đpt là O(logN) :p.
tại vì m^n = m^(n/2)*m^(n/2) như vậy mình chỉ cần tính m^(n/2) 1 lần thôi.
C++:
class Solution {
public:
    double myPow(double x, int n) {
        double result = 1;
        x = n > 0 ? x : 1/x;
        for (int i = 0; n != 0; i++){
            result *= n%2!=0 ? x : 1;
            n/=2;
            x = x*x;
        }
        return result;
    }
};
Bài này chắc là kinh điển, nên chắc nhiều anh em cũng từng làm qua rồi. :D
 
bài này easy chứ medium gì. tôi từng cho làm lúc phỏng vấn.
đứa nào dùng for loop từ 1 -> n 1 phát là tôi "thank you for your time" rồi mời về ngay lập tức.
tính share bên topic thuật toán mà bị lộn thớt, :beat_brick: . Để move qua bên kia.
Mà thím gắt dữ vậy, cũng nên để cho ứng viên có cơ hội sửa sai chứ. :D. Bài này trên leetcode xếp medium mà.
 
bài này easy chứ medium gì. tôi từng cho làm lúc phỏng vấn.
đứa nào dùng for loop từ 1 -> n 1 phát là tôi "thank you for your time" rồi mời về ngay lập tức.
ủa tại sao ? Làm vậy có khắc khe quá ko ? Trên đời này có nhiều cách để giải quyết vấn đề mà chú. Đôi khi cách ngu ngục nhsât lại là cách dễ tiếp cận nhất. Có cần cao siêu gì đâu
 
Dạo này em cũng lo chuẩn bị đi pv nên cũng ko có time giải leetcode nữa. Mà càng giải nhiều càng thấy mình ngu quá. Nên tự ti về bản thân, ko dám giải tiếp =(( =((
 
seunMSF.png

bác nào rảnh cho em ý tưởng bài này với ạ @@
bài này ý tưởng khởi nguồn của nó là mobius inverse function.
Nhưng k cần biết cái trên, chỉ cần biết (tổng phi(d) với d chạy trên tập ước của n = n)
Kết quả = phi(d) * số tập con thực sự mà mỗi phần tử trong đó đều chia hết cho d (với d chạy từ 1 đến max(a_i), thường giới hạn khoảng 10^5-10^6)
Phi d có thể precompute, số tập hợp thì là 2^(số phần tử chia hết cho d) - 1, cũng precompute nốt
Độ phức tạp là khoảng n*sqrt(n)
 
bài này easy chứ medium gì. tôi từng cho làm lúc phỏng vấn.
đứa nào dùng for loop từ 1 -> n 1 phát là tôi "thank you for your time" rồi mời về ngay lập tức.
Kể cả FAANG interview cũng build từng step từ for cơ bản đi lên, chứ k có thằng nào bụp phát ra optimal solution.
Biết đc tí bày đặt hạch hoẹ, may cho mấy interviewee đó đi về, chứ làm chung với loser như ba thì bất hạnh.
 
giải quyết problem về hàm pow thì tôi cần gì phải đi phỏng vấn ai lol.

vấn đề là muốn xem ứng viên họ kinh nghiệm thế nào về học thuật. Đi phỏng vấn ở mức lương từ 150-175K mà được hỏi về code hàm pow mà nghĩ người ta chỉ cần cái solution vòng lặp for từ 1-> n thì nên tự rút lui vì bạn đấy đã apply nhầm vị trí và level. tốt nhất là nên đi tìm việc ở mức 80K...

ủa tại sao ? Làm vậy có khắc khe quá ko ? Trên đời này có nhiều cách để giải quyết vấn đề mà chú. Đôi khi cách ngu ngục nhsât lại là cách dễ tiếp cận nhất. Có cần cao siêu gì đâu
 
Sửa lần cuối:

Thống kê chủ đề

Ngày tạo
unknowpc90,
Người trả lời cuối
Spaghetti Code,
Trả lời
1.460
Lượt xem
154.144
Quay lại
Lên đầu trang