em cứ random thế. chắc tối về mới làm thím ạBài này chua vl đấy
Dạo này em cũng có nghịch LC, các bác có thể cho em hỏi là nếu muốn improve khả năng giải thuật thì mình nên follow topic theo thứ tự ntn ạ? Trước mắt thì em đang nghịch gần xong topic arrays 101.
Easy
rồi nhấn Pick One để nó random ra 1 bài làm thôi thím. Đừng làm theo topic, vì làm được 1 bài qua bài sau nó sẽ ná ná như vậy => chưa chắc sẽ giúp thím nhớ lâue cam on a.Cứ filter theo mứcEasy
rồi nhấn Pick One để nó random ra 1 bài làm thôi thím. Đừng làm theo topic, vì làm được 1 bài qua bài sau nó sẽ ná ná như vậy => chưa chắc sẽ giúp thím nhớ lâu
Công nhận, đọc xong bài đó phải mất 15p nghĩ mãi đ ra, bài ez méo gì khó vl.cái not contiguous subsequence chí mạng thật, đọc hồi mới ngẫm ra
Có 1 bài cũng trick tương tự như bài hôm nay nè, tôi đánh giá khá hay, nếu đem đi PV có thể test ứng viên từ mức độ dễ nâng dần đến mức độ khó
https://leetcode.com/problems/remove-palindromic-subsequences/
Mặc dù bài này Easy, các thím có thể mở rộng ra:
- Nếu chuỗi
s
có 3 ký tựa, b, c
- Nếu chuỗi
s
có 4 ký tựa, b, c, d
- Néu chuỗi
s
có K ký tựa, b, c, d, ..., k
Ơ bài này trước pvan ở cty ở HCM nè ))27/6/2022:
"5241" -> "4130" + "1111"
- 1 bài khá xàm lol
- Vì số n là tổng các số nhị phân nên cứ mỗi lần ta giảm 1 đơn vị cho 1 chữ số, nếu là chữ số 0 thì ko giảm -> mỗi lần giảm sẽ tạo đc 1 số nhị phân, giảm cho đến khi ra số 0 -> số lần giảm ít nhất là chữ số lớn nhất
- VD: số "5213"
"4130" -> "3010" + "1110"
"3010" -> "2000"+ "1010"
"2000"-> "1000" +"1000"
"1000"-> "0000" +"1000"
- Nghĩ 2 phút là ra, cơ mà nghĩ xong cứ thấy nó dễ dễ nên éo dám submit, check lại, dẫn đến mất 5p
- Code: https://leetcode.com/submissions/detail/732137726/
public int minPartitions(String n) {
int max = -1;
int length = n.length();
for (int i = 0; i < length; i++) {
// Check the gaps
int tempNumWithCharAt = n.charAt(i) - '0';
max = Math.max(tempNumWithCharAt, max);
}
return max;
}
public class Solution {
public int MinDeletions(string s) {
int[] count = new int['z'-'a'+1];
foreach (char c in s)
count[c-'a']++;
Array.Sort(count);
HashSet<int> frequency = new ();
int ret = 0;
for (var i = 0; i < count.Length; i++)
{
while (count[i] > 0 && frequency.Contains(count[i]))
{
count[i]--;
ret++;
}
frequency.Add(count[i]);
}
return ret;
}
}
cùng idea với thímCũng làm gần giống như thím Violet nhưng dùng HashSet để check cho nónhẹ nhàngđơn giản
C#:public class Solution { public int MinDeletions(string s) { int[] count = new int['z'-'a'+1]; foreach (char c in s) count[c-'a']++; Array.Sort(count); HashSet<int> frequency = new (); int ret = 0; for (var i = 0; i < count.Length; i++) { while (count[i] > 0 && frequency.Contains(count[i])) { count[i]--; ret++; } frequency.Add(count[i]); } return ret; } }
Em thấy cái của bác không cần phải sort ấyCũng làm gần giống như thím Violet nhưng dùng HashSet để check cho nónhẹ nhàngđơn giản
C#:public class Solution { public int MinDeletions(string s) { int[] count = new int['z'-'a'+1]; foreach (char c in s) count[c-'a']++; Array.Sort(count); HashSet<int> frequency = new (); int ret = 0; for (var i = 0; i < count.Length; i++) { while (count[i] > 0 && frequency.Contains(count[i])) { count[i]--; ret++; } frequency.Add(count[i]); } return ret; } }
em nghĩ sort thì là nlognEm thấy cái của bác không cần phải sort ấy
em cũng tương tự bác, Java 100% https://leetcode.com/submissions/detail/733055071/
hàm .contains() của HashSet thì độ phức tạp O(1) thôi bácem nghĩ sort thì là nlogn
còn không sort thì là n*n
do em hiểu k sai thì hàm gọi n lần hàm contains thì độ phức tạp là n*n
Không sort thì tạch cái testEm thấy cái của bác không cần phải sort ấy
em cũng tương tự bác, Java 100% https://leetcode.com/submissions/detail/733055071/
"bbcebab"
thím ơi count[i] > 0
chứ không phải do chưa sort https://leetcode.com/submissions/detail/733011400/sorry bác, em quên đấy.hàm .contains() của HashSet thì độ phức tạp O(1) thôi bác
Nhưng trong trường hợp n nhỏ thì dùng HashSet sẽ đỡ phải sort cái mảng 26 phần tử có khi sẽ tốt hơn.Suy cho cùng số lần bỏ 1 phần tử < n nên đều là O(n) như nhau thôi
Nhưng trong trường hợp n nhỏ thì dùng HashSet sẽ đỡ phải sort cái mảng 26 phần tử có khi sẽ tốt hơn.