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
Với mỗi index in range(n) thì 3 chữ cái cho x, y, z là a, b, c.
+ Nếu tồn tại c # b and c # a thì mình chỉ cần bỏ thằng c trong A-Z của index là đc. Len sẽ là 26 * n - 1
+ Ex: x = ABC y = DEF và z = GHI => [A...Z(bỏ G)][A...Z][A....Z]
+ Nếu không tồn tại bất kỳ a, b, c thỏa mãn ở trên thì return -1
+ Ex: x = ABC y = DEF và z = DBF

Bác thử ideal ntn chưa?
ví dụ của bác thì phải bỏ I bác ạ. cùng len thì ...FGH.....IJK>FGH...IJK (FG<FH)
còn -1 giống case với mỗi word thuộc z thì cùng tồn tại ở cùng index x hoặc y.
 
should be easy :sweat:
Java:
class Solution {
    public int xorAllNums(int[] nums1, int[] nums2) {
        int res = 0;
        if((nums2.length &1) == 1)
            for(int i:nums1)
                res^=i;
        if((nums1.length & 1) ==1)
            for(int i:nums2)
                res^=i;
        return res;
    }
}
 
Chết code rác quá :byebye:
Bài này chỉ sử dụng tính chất của XOR, đó là a ^ a = 0, a ^ 0 = a
JavaScript:
a1 ^ b1 ^ a1 ^ b2 ^ a1 ^ b3 ^ a1 ^ b4 = b1 ^ b2 ^ b3 ^ b4
a2 ^ b1 ^ a2 ^ b2 ^ a2 ^ b3 ^ a2 ^ b4 = b1 ^ b2 ^ b3 ^ b4
a3 ^ b1 ^ a3 ^ b2 ^ a3 ^ b3 ^ a3 ^ b4 = b1 ^ b2 ^ b3 ^ b4

= b1 ^ b2 ^ b3 ^ b4
JavaScript:
function xorAllNums(nums1: number[], nums2: number[]): number {
    const l1 = nums1.length, l2 = nums2.length;
    if (l1 % 2 === 0 && l2 % 2 === 0) return 0;
    if (l1 % 2 === 0) return nums1.reduce((acc, cur) => acc ^ cur, 0);
    if (l2 % 2 === 0) return nums2.reduce((acc, cur) => acc ^ cur, 0);
    return nums1.reduce((acc, cur) => acc ^ cur, 0) ^ nums2.reduce((acc, cur) => acc ^ cur, 0)
};
xor ngược thì xor 2 lần với số đó còn phép or với and ngược lại thì sử dụng đếm freq bit bác a nô biết chưa :matrix:
 
xor ngược thì xor 2 lần với số đó còn phép or với and ngược lại thì sử dụng đếm freq bit bác a nô biết chưa :matrix:
and với or làm gì ngược lại được bác :surrender: . Ví dụ x or 1 = 1 => thì x có thể là 0 và 1 mà. Hay x and 0 = 0 thì x = 1 hay x = 0 đâu quan trọng
 
and với or làm gì ngược lại được bác :surrender: . Ví dụ x or 1 = 1 => thì x có thể là 0 và 1 mà. Hay x and 0 = 0 thì x = 1 hay x = 0 đâu quan trọng
fen làm sliding window với phép or and đi
rKvNKm2.png
 
JavaScript:
var xorAllNums = function(nums1, nums2) {
    let xor = 0;
    const n1 = nums1.length;
    const n2 = nums2.length;
    if(n2 % 2 === 1){
        for(const num of nums1){
            xor ^= num;
        }
    }
    if(n1 % 2 === 1){
        for(const num of nums2){
            xor ^= num;
        }
    }
    return xor;
};
 
Không biết các bác trong này biết vụ này chưa nhưng sẵn sắp Tết e chia sẻ
Mình có thể làm trước các bài daily và hôm đó chỉ cần submit là được. Nhất là vào dịp sắp Tết thì làm trước sẽ giúp các bác đi chơi mà ko lo mất streak
Và làm sau để biết bài nào sắp lên daily thì: vào trang chủ của Leetcode sẽ có những editorial mới nhất được đăng. Những bài mà được thêm Editorial sẽ có phần trăm cao là daily cho những ngày sắp tới

Ví dụ là bài hôm nay đã thêm Editorial vào 13 hôm trước
1737009486008.png
 
Sửa lần cuối:
bài daily thứ 3 trong chuỗi ngày học Go, hôm qua nhiều việc trên cty quá nên tối về cop sol:pudency:
C-like:
func xorAllNums(a []int, b []int) int {
    count:=make(map[int]int);
    for _, n := range a {
        count[n]+=len(b);
    }
    for _, n := range b {
        count[n]+=len(a);
    }
    res := 0
    for k, v := range count {
        if v%2 == 1 {
            res^=k;
        }
    }
    return res
}
 
cái graph nhiều khi biết cách giải chạy tay ok nhưng implement mãi ko xong :sweat:
Graph mình thấy khó nhất là khâu đọc và phân tích đề bài, đù má nó cố tình viết đề mấy bài graph loạn cào cào đọc rối kinh.
Như cái bài Q3 contest hôm CN vừa rồi, sol thì rất đơn giản, nhưng đề nó viết rối xong thêm dữ kiện thừa vào, lời giải chả cần mẹ gì cái đấy luôn, cay vãi đái.
 
Swift:
class Solution {
    func xorAllNums(_ nums1: [Int], _ nums2: [Int]) -> Int {
        var result = 0
        result = (nums2.count & 1 == 1) ? nums1.reduce(result, ^) : result
        result = (nums1.count & 1 == 1) ? nums2.reduce(result, ^) : result
        return result
    }
}
 
Đọc hint, đọc solution, hỏi cả chatgpt :beat_brick:

Mấy bác cho em xin tips học thằng bit manipulation này với

...
Như đã có bác khác nói, ít khả năng có tip cụ thể, vì bitwise cũng là 1 phần trong số những phần có thể gặp trong problems, không quá đặc biệt (tỷ trọng xuất hiện không cao).
==> nếu có tips ở đây thì cũng là tips chung cho học DSA, học Computer.
(e.g. tips cũ:
Mã:
Học cách đọc hiểu code người ta viết trước cái đã, ko có gì nhanh lên trình bằng việc đọc hiểu dc code người khác. hiểu chứ ko phải copy y khuôn nha....
Mã:
Trước mình cũng như vậy. Sau rồi tự học kiểu BDSM: Cứ code đúng theo bài, theo sách (code chứ không copy) nhiều vào. Mỗi ngày 10 bài. Code nhiều tự dưng 1 lúc nào đấy não nó thông thôi, y như kiểu Machine Learning :LOL:. Đừng lo đến việc không hiểu ngay toàn bộ code, cứ code đã :D.

Về phần CTDL&GT, đọc lại giáo trình (nếu có), rồi lên mạng đọc thêm, làm bài theo topic,
)
 

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.344
Quay lại
Lên đầu trang