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.
JavaScript:
unction fromCharCode(charCode:number):string{
    const firstCharacterAnchor = 'A'.charCodeAt(0) - 1;

    return String.fromCharCode(charCode + firstCharacterAnchor);
}

function getCurrentNumber(columnNumber:number):number{
    const currentNumber = columnNumber % 26;
     return currentNumber === 0 ? 26: currentNumber;
}

function convertToTitle(columnNumber: number): string {
    if (columnNumber <=0 ) return '';
    const currentNumber = getCurrentNumber(columnNumber);
    const currentCharacter = fromCharCode(currentNumber);
    const nextColumnNumber = (columnNumber -currentNumber)/ 26
    return (convertToTitle(nextColumnNumber) + currentCharacter);
};
 
ơ cái c-- ngon vậy mà ko nghĩ ra
Qz8dGvJ.png


2^31 thì tầm 6-7 chữ đủ cho cái sso vậy viết s=c+s chắc cũng O(1) và ko có cấp phát động, đúng là ko nên rev làm gì
aVgiONl.png


C++:
struct Solution {
    string convertToTitle(int n) {
        for (string res;; n /= 26)
            if (n--) res = static_cast<char>(n % 26 + 'A') + res; else return res;
    }
};

@freedom.9 thấy chưa.
Sao dám chửi đổng nữa :-/
 
ơ cái c-- ngon vậy mà ko nghĩ ra
Qz8dGvJ.png


2^31 thì tầm 6-7 chữ đủ cho cái sso vậy viết s=c+s chắc cũng O(1) và ko có cấp phát động, đúng là ko nên rev làm gì
aVgiONl.png


C++:
struct Solution {
    string convertToTitle(int n) {
        for (string res;; n /= 26)
            if (n--) res = static_cast<char>(n % 26 + 'A') + res; else return res;
    }
};
nay hiền thế, chắc thằng nào log nick vô rồi :go:
 
Mã:
class Solution {
    public String convertToTitle(int columnNumber) {
        StringBuilder  res = new StringBuilder();
        while(columnNumber-- > 0){
            char c = (char) (columnNumber%26 + 'A');
            columnNumber /= 26;
            res.append(c);
        }
        return res.reverse().toString();
    }
}
 
Mấy thím trên nghĩ ra cách -- rồi /26 đỉnh nhỉ. Mình đọc đề là làm cách trâu tìm số chữ số rồi tìm số
Wf29Rhg.png
 
nhìn là thấy giống base 26 mà bác o_O

Đúng nhưng cách dễ làm nhất là tìm số chữ số rồi mới áp cách đơn thuần. Base 26 thì chỉ có %26 tìm chữ số và /26 move sang chữ số tiếp theo thôi.
Ở đây tất cả đều làm cách tối ưu nhất luôn là áp thêm cái -1 kia
yBBewst.png

Hay mình gà quá nhỉ.

Đọc editorial thấy có vẻ nó giải thích đoạn +1 không đúng lắm, +1 đó là do các bộ ít chữ số hơn đôn lên chứ đâu phải do start từ 1. Start từ 0 hay 1 thì chỉ cần trừ 1 đúng 1 lần thôi.
 
Đúng nhưng cách dễ làm nhất là tìm số chữ số rồi mới áp cách đơn thuần. Base 26 thì chỉ có %26 tìm chữ số và /26 move sang chữ số tiếp theo thôi.
Ở đây tất cả đều làm cách tối ưu nhất luôn là áp thêm cái -1 kia
yBBewst.png

Hay mình gà quá nhỉ.

Đọc editorial thấy có vẻ nó giải thích đoạn +1 không đúng lắm, +1 đó là do các bộ ít chữ số hơn đôn lên chứ đâu phải do start từ 1. Start từ 0 hay 1 thì chỉ cần trừ 1 đúng 1 lần thôi.
Trừ 1 là rõ mà thím. Mình đang convert từ số ra chữ theo dạng … + ‘A’. Bản thân ‘A’ là 1 rồi nên số bị chia phải bị trừ đi 1 để số dư cũng giảm đi 1, hoặc từ 0 về 25 -> tính ra chữ

via theNEXTvoz for iPhone
 
Trừ 1 là rõ mà thím. Mình đang convert từ số ra chữ theo dạng … + ‘A’. Bản thân ‘A’ là 1 rồi nên số bị chia phải bị trừ đi 1 để số dư cũng giảm đi 1 -> tính ra chữ chuẩn.

via theNEXTvoz for iPhone

Đấy là thím nhìn 'A' là 1 còn base 26 thì 'A' là 0 mà.
Còn cái dãy mà A, B, mà còn có AA thì phải tính là base 27 (0 + 'A' -> 'Z'). Nhưng loại các số mà số 0 phía bên phải.

Dãy hệ 27: 0, A, B, ..., Z, A0, AA, AB, ...,
Dãy đã cho là dãy hệ 27 bỏ 0, A0, ....

Đấy là theo tư duy về số học bình thường của mình.
4gmOAMB.png


Còn nếu lập luận theo hướng dồn 26, 26^2, 26^3 vào các giá trị số sau thì mình hiểu. Ví dụ 26 + vào chữ thứ 2 là do bộ 1 số A-Z nằm trước các bộ 2 số.
 
class Solution {
public String convertToTitle(int columnNumber) {
String s="";
while (columnNumber!=0)
{
int tmp =columnNumber%26;
columnNumber/=26;
if (tmp==0)
{
tmp=26;
columnNumber-=1;
};
char c=(char)(tmp+65-1);
s= c+s;
}
return s;
}
}
 
Đấy là thím nhìn 'A' là 1 còn base 26 thì 'A' là 0 mà.
Còn cái dãy mà A, B, mà còn có AA thì phải tính là base 27 (0 + 'A' -> 'Z'). Nhưng loại các số mà số 0 phía bên phải.

Dãy hệ 27: 0, A, B, ..., Z, A0, AA, AB, ...,
Dãy đã cho là dãy hệ 27 bỏ 0, A0, ....

Đấy là theo tư duy về số học bình thường của mình.
4gmOAMB.png


Còn nếu lập luận theo hướng dồn 26, 26^2, 26^3 vào các giá trị số sau thì mình hiểu. Ví dụ 26 + vào chữ thứ 2 là do bộ 1 số A-Z nằm trước các bộ 2 số.
Thực ra mấy bài này mình thấy nó cũng ăn theo /26 với %26, mà ngồi viết ra giấy thì thấy nó ra thôi fence chứ mình chịu thua ko biết base26 hay base10 kaka

Đọc 2 cuốn sách của Alex Xu chắc đủ r bác với course advanced sys desgign của designguru nếu bác muốn tìm hiểu distributed systems, chứ mình thấy system design video course chỗ nào cũng na ná nhau.
Sys design mình thấy đúng là ko nên học online thật, vd như Neetcode nó đi làm đc 1 năm thì video nó ko chuyên sâu, chỉ phù hợp cho beginner.
Mấy thanh niên khác mình chưa coi nhiều nhưng mà đúng là sách giấy nó vẫn hơn, mình thấy course trên Leetcode có mấy topic hay hay để mua đọc trước rồi đọc thêm sách của fence thử :sweet_kiss:, thank fence

via theNEXTvoz for iPhone
 
Sửa lần cuối:
Ông ngày xưa cũng láo nháo bỏ mịa :))) Nhớ có lần tôi giải thích mấy cái về system design interview xong ông nhảy vào chém láo.
Thực ra đúng sai chém nhau bình thường thôi fence, cơ bản càng lớn thì càng tranh luận theo kiểu constructive thôi chứ xưa trẻ trâu thì láo nháo là bình thường fence thông cảm :love:
Chửi nhau xong việc thì thôi ai về nhà nấy tự review mới là văn minh :boss:
 
Sửa lần cuối:
Sau gần 1 tuần cày cuốc thì cũng làm xong 50 câu SQL thiếu nhi, tiếp theo là 50 câu Advance :beauty:
 
Mã:
class Solution {    public long zeroFilledSubarray(int[] nums) {        int cnt = nums[0] == 0 ? 1 : 0;        long ans = nums[0] == 0 ? 1 : 0;        int last = nums[0];        for (int i = 1; i < nums.length; i++){            if (nums[i] != 0) {                last = nums[i];                cnt = 0;                continue;            }            if (nums[i] == 0) {                if (last != nums[i]) {                    last = nums[i];                }                cnt++;                ans += cnt;            }        }        return ans;    }}
 
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.212.566
Quay lại
Lên đầu trang