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.
PHP:
class Solution {

    /**
     * @param Integer $start
     * @param Integer $goal
     * @return Integer
     */
    function minBitFlips($start, $goal) {
        $startBin = decbin($start);
        $goalBin = decbin($goal);

        // make the 2 string are same length
        $diff = abs(strlen($startBin) - strlen($goalBin));
        if ($diff > 0) {
            $add = array_fill(0, $diff, '0');
            if (strlen($startBin) > strlen($goalBin)) {
                $goalBin = implode('', $add) . $goalBin;
            } else {
                $startBin = implode('', $add) . $startBin;
            }
        }
        
        // count steps
        $steps = 0;
        for ($i=0; $i<strlen($startBin); $i++) {
            $steps += ($startBin[$i] !== $goalBin[$i]) ? 1 : 0;
        }

        return $steps;
    }
}
 
Java:
public int minBitFlips(int start, int goal) {
    StringBuilder s1 = new StringBuilder(Integer.toBinaryString(start));
    StringBuilder s2 = new StringBuilder(Integer.toBinaryString(goal));
    while (s1.length() < s2.length()) s1.insert(0, '0');
    while (s2.length() < s1.length()) s2.insert(0, '0');
    int count = 0;
    for (int i = 0; i < s1.length(); i++) {
        if (s1.charAt(i) != s2.charAt(i)) {
            count++;
        }
    }
    return count;
}
 
Python:
class Solution:
    def minBitFlips(self, start: int, goal: int) -> int:
        temp = start ^ goal
        ans = 0
        while temp > 0:
            temp = temp & (temp - 1)
            ans += 1
        return ans
 
Mã:
class Solution:
   
class Solution:
    def minBitFlips(self, start: int, goal: int) -> int:
        s = start ^ goal
        ans = 0
        while s > 0:
            ans += s & 1
            s >>= 1
        return ans
 
Mã:
class Solution:
    def minBitFlips(self, start: int, goal: int) -> int:
        start_bin = bin(start)[2:].zfill(max(len(bin(start)[2:]), len(bin(goal)[2:])))
        goal_bin = bin(goal)[2:].zfill(max(len(bin(start)[2:]), len(bin(goal)[2:])))

        flips = 0
        for i in range(len(start_bin)):
            if start_bin[i] != goal_bin[i]:
                flips += 1

        return flips
code như này có đáng đánh đòn ko cao thủ @Cố Trường Ca
osCpCsi.png
 
C#:
public class Solution {
    public static string ConvertToBase3Distinct(int num)
    {
        var res = num >= 0 ? string.Empty : "-";
        num = Math.Abs(num);
        var length = (int)Math.Log(num, 3);
        while (num > 0 && length >= 0)
        {
            if (num - (int)Math.Pow(3, length) < 0)
            {
                res += "0";
            }
            else
            {
                num -= (int)Math.Pow(3, length);
                res += "1";
            }

            length--;
        }
        if (num != 0) return "2";
        return res;
    }
   
    public bool CheckPowersOfThree(int n)
    {
        var binary = ConvertToBase3Distinct(n);
        foreach (var dig in binary)
        {
            if (!(dig == '1' || dig == '0'))
                return false;
        }

        return true;
    }

}

nay rảnh nên có bát cơm thêm mời các thím chưa ăn bao giờ
JEWoIdl.png

 
C#:
public class Solution {
    public static string ConvertToBase3Distinct(int num)
    {
        var res = num >= 0 ? string.Empty : "-";
        num = Math.Abs(num);
        var length = (int)Math.Log(num, 3);
        while (num > 0 && length >= 0)
        {
            if (num - (int)Math.Pow(3, length) < 0)
            {
                res += "0";
            }
            else
            {
                num -= (int)Math.Pow(3, length);
                res += "1";
            }

            length--;
        }
        if (num != 0) return "2";
        return res;
    }
 
    public bool CheckPowersOfThree(int n)
    {
        var binary = ConvertToBase3Distinct(n);
        foreach (var dig in binary)
        {
            if (!(dig == '1' || dig == '0'))
                return false;
        }

        return true;
    }

}

nay rảnh nên có bát cơm thêm mời các thím chưa ăn bao giờ
JEWoIdl.png

rút gọn nhân tử chung 3
Java:
class Solution {
    public boolean checkPowersOfThree(int n) {
        while(n>0){
            if(n%3==0){
                n/=3;
            }
            else{
                n-=1;// 3^0
                if(n%3!=0) return false;
                n/=3;
            }
        }
        return true;
    }
}
 
đoạn này hơi tricky nhỉ
Xv0BtTR.png
thì ngoài cái 3^0 ra thì mấy cái còn lại 3^x chia hết cho 3, đã trừ đi 3^0 r mà mấy tổng cái còn lại ko chia hết cho 3 chứng tỏ có imposter trà trộn
Y9XGQJi.png

chư có đọc tag bài này thấy chỉ mỗi math chứ ko cũng tính làm backtrack duyệt hết 2^15 lần
ig3L68e.png
 
thì ngoài cái 3^0 ra thì mấy cái còn lại 3^x chia hết cho 3, đã trừ đi 3^0 r mà mấy tổng cái còn lại ko chia hết cho 3 chứng tỏ có imposter trà trộn
Y9XGQJi.png

chư có đọc tag bài này thấy chỉ mỗi math chứ ko cũng tính làm backtrack duyệt hết 2^15 lần
ig3L68e.png
bác có dạy trên udemy không em đăng ký học với
xjIzSG9.png
 
hiếu nộp bài


Python:
class Solution:
    def minBitFlips(self, start: int, goal: int) -> int:
        # e.g num = 13 -> convert to 1101 and sum = 1 + 1 + 0 + 1
        def dec2sumbin(num):
            if num == 0: return 0
            sumbin = 0

            while num > 0:
                sumbin += num % 2
                num = num // 2
            return sumbin

        # xor: 1010 ^ 0111 = 1101
        return dec2sumbin(start ^ goal)
 
rút gọn nhân tử chung 3
Java:
class Solution {
    public boolean checkPowersOfThree(int n) {
        while(n>0){
            if(n%3==0){
                n/=3;
            }
            else{
                n-=1;// 3^0
                if(n%3!=0) return false;
                n/=3;
            }
        }
        return true;
    }
}
đù mé tôi đâm vô dfs + memo vẫn pass cơ mà chạy hết gần 3s =))
xem average TC toàn 10 20ms là thấy có vấn đề, nghĩ ngay là có cái trick nào đó :D
 
leetcode trôn 1 line
Java:
class Solution {
    public int minBitFlips(int a, int b) {
        return Integer.bitCount(a^b);
    }
}
 
C-like:
impl Solution {
    pub fn min_bit_flips(start: i32, goal: i32) -> i32 {
        (start ^ goal).count_ones() as i32
    }
}
 
C#:
public class Solution {
    public static string ConvertToBase3Distinct(int num)
    {
        var res = num >= 0 ? string.Empty : "-";
        num = Math.Abs(num);
        var length = (int)Math.Log(num, 3);
        while (num > 0 && length >= 0)
        {
            if (num - (int)Math.Pow(3, length) < 0)
            {
                res += "0";
            }
            else
            {
                num -= (int)Math.Pow(3, length);
                res += "1";
            }

            length--;
        }
        if (num != 0) return "2";
        return res;
    }
  
    public bool CheckPowersOfThree(int n)
    {
        var binary = ConvertToBase3Distinct(n);
        foreach (var dig in binary)
        {
            if (!(dig == '1' || dig == '0'))
                return false;
        }

        return true;
    }

}

nay rảnh nên có bát cơm thêm mời các thím chưa ăn bao giờ
JEWoIdl.png

Java:
class Solution {
    public boolean checkPowersOfThree(int n) {
        for(int i=16;i>=0;i--){
            if(n>=Math.pow(3,i)) n-=Math.pow(3,i);
        }
        return n==0;
    }
}

tại sao ko ai làm thế này nhỉ, trong solution cũng k thấy???
 
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.926
Quay lại
Lên đầu trang