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.
trình em cùi quá nên đang học lại DS từ đầu ròi mới dám qua làm leetcode, lúc trước cứ cắm đầu làm mà chẳng đọng lại bao nhiu :pudency: , em cập nhật ở đây với các thím cho có động lực

06.09.2024: Array - Dynamic array, Left Rotation
Để chia sẻ với thím. Mình cũng newbie. Thì cách mình luyện là bắt đầu với những câu easy, sort theo acceptance rate ( càng cao càng dễ), làm từ trên xuống. Mỗi ngày tầm 3 bài + thử giải daily. Sau đó coi mấy lời giải, để coi họ làm gì, coi thêm video youtube nếu chưa hiểu. Làm vậy là tự khắc nhớ DS à. Sau cỡ trăm bài thì chuyển lên medium, vẫn sort theo acceptance. Lưu ý là nên làm đa dạng các tag, mỗi tag chục bài là đẹp :) Đây là cách của mình thôi, chứ các thím khác có nhiều cách hiệu quả hơn.
 
@MasonMaoSuVuong có mấy cách hiệu quả lắm, ko cần nháp mà acceptance rate cao :smile:
gvTwnV8.gif
Diệt từ trong trứng nhé
KgmQHtR.png
 
Để chia sẻ với thím. Mình cũng newbie. Thì cách mình luyện là bắt đầu với những câu easy, sort theo acceptance rate ( càng cao càng dễ), làm từ trên xuống. Mỗi ngày tầm 3 bài + thử giải daily. Sau đó coi mấy lời giải, để coi họ làm gì, coi thêm video youtube nếu chưa hiểu. Làm vậy là tự khắc nhớ DS à. Sau cỡ trăm bài thì chuyển lên medium, vẫn sort theo acceptance. Lưu ý là nên làm đa dạng các tag, mỗi tag chục bài là đẹp :) Đây là cách của mình thôi, chứ các thím khác có nhiều cách hiệu quả hơn.
Em cũng mới luyện, em thaays luyện theo chủ đề cũng hiệu quả á, mỗi dạng làm tầm 10 bài cho ghi nhớ luôn. Tài liệu thì tham khảo trong này, có mấy bác tay to giới thiệu hay quá em share lại cho bác.
 
C#:
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     public int val;
 *     public ListNode next;
 *     public ListNode(int val=0, ListNode next=null) {
 *         this.val = val;
 *         this.next = next;
 *     }
 * }
 */
public class Solution {
    public ListNode ModifiedList(int[] nums, ListNode head) {
        HashSet<int> set = new(nums);
        List<ListNode> helper = new List<ListNode>();

        while(head != null){
            if(!set.Contains(head.val))
                helper.Add(head);
            head = head.next;
        }

        helper.Reverse();
        ListNode prev = null;
       
        for(int i = 0; i < helper.Count(); ++i){
            head = new ListNode(helper[i].val, prev);
            prev = head;
        }
        return head;
    }
}


MjfezZB.png
ai lấy mất búa của anh à?
Không ai lấy hết, đố fen viết được O(1) space đó
Q8sGcLO.png
 
Mấy bài mà directed graph thì giải bằng topological sort là hay nhất rồi fence. Còn undirected graph thì mới phải dùng dfs bfs, mà undirected graph có weight nữa thì nghĩ tới Dijkstra.


via theNEXTvoz for iPhone
topo sort nó có 2 kiểu giải dfs hoặc bfs mà
xjIzSG9.png
Em hỏi thử xem thím quen kiểu nào, hay cái nào cũng được không quan trọng, mà bfs cũng detect được cycle giống dfs
Java:
class Solution {
    int[] list;
    int idx;
    boolean hasCycle;
    public int[] findOrder(int numCourses, int[][] prerequisites) {
        int n = numCourses;
        list = new int[n];
        idx = n - 1;
        hasCycle = false;
        List<Integer>[] G = new List[n];
        boolean[] visited = new boolean[n];

        for (int i = 0; i < numCourses; i++) {
            G[i] = new ArrayList<>();
        }

        for (int[] pre: prerequisites) {
            G[pre[1]].add(pre[0]);
        }

        for (int i = 0; i < numCourses; i++) {
            dfs(i, G, visited, new HashSet<>());
        }

        return hasCycle ? new int[0] : list;
    }

    private void dfs(int node, List<Integer>[] G, boolean[] visited, Set<Integer> set) {
        if (set.contains(node)) {
            hasCycle = true;
            return;
        }

        if (visited[node]) return;

        set.add(node);

        for (int adj: G[node]) {
            if (!visited[adj]) {
                dfs(adj, G, visited, set);
            }
        }

        visited[node] = true;
        list[idx] = node;
        idx--;
    }
}
contest vừa rồi vào trễ, còn 30' cũng ráng submit nhục quá :too_sad:
UKiCiKh.png

1725638588544.png
 
topo sort nó có 2 kiểu giải dfs hoặc bfs mà
xjIzSG9.png
Em hỏi thử xem thím quen kiểu nào, hay cái nào cũng được không quan trọng, mà bfs cũng detect được cycle giống dfs
Java:
class Solution {
    int[] list;
    int idx;
    boolean hasCycle;
    public int[] findOrder(int numCourses, int[][] prerequisites) {
        int n = numCourses;
        list = new int[n];
        idx = n - 1;
        hasCycle = false;
        List<Integer>[] G = new List[n];
        boolean[] visited = new boolean[n];

        for (int i = 0; i < numCourses; i++) {
            G[i] = new ArrayList<>();
        }

        for (int[] pre: prerequisites) {
            G[pre[1]].add(pre[0]);
        }

        for (int i = 0; i < numCourses; i++) {
            dfs(i, G, visited, new HashSet<>());
        }

        return hasCycle ? new int[0] : list;
    }

    private void dfs(int node, List<Integer>[] G, boolean[] visited, Set<Integer> set) {
        if (set.contains(node)) {
            hasCycle = true;
            return;
        }

        if (visited[node]) return;

        set.add(node);

        for (int adj: G[node]) {
            if (!visited[adj]) {
                dfs(adj, G, visited, set);
            }
        }

        visited[node] = true;
        list[idx] = node;
        idx--;
    }
}
contest vừa rồi vào trễ, còn 30' cũng ráng submit nhục quá :too_sad:
UKiCiKh.png

Xem tệp đính kèm 2669780
Xài bfs quen hơn fence, nhưng implement dfs cũng ko vấn đề gì, hiểu concept về indegree là đc.
Rating 1350 đúng là đỉnh cao đời người, Leetcode nó cho starting point 1k5 mà fence đc hẳn 1350
BdgiW7R.gif

30 phút ít ra cũng phải làm đc bài easy

via theNEXTvoz for iPhone
 
Xài bfs quen hơn fence, nhưng implement dfs cũng ko vấn đề gì, hiểu concept về indegree là đc.
Rating 1350 đúng là đỉnh cao đời người, Leetcode nó cho starting point 1k5 mà fence đc hẳn 1350
BdgiW7R.gif


via theNEXTvoz for iPhone
dfs thì không cần care về indegree, có dùng stack nhưng thay stack bằng O(1) được
zFNuZTA.png

Thím ăn thử cơm này thử khô không.
Sau này đừng xúi rau hẹ khác chui vào contest nữa nhé
xjIzSG9.png

Tuần này có nên làm quả contest nữa không ta, lỡ xuống tiếp 1300 chắc có nước bỏ nick voz cho đỡ nhục
6f4YXpQ.gif
 
dfs thì không cần care về indegree, có dùng stack nhưng thay stack bằng O(1) được
zFNuZTA.png

Thím ăn thử cơm này thử khô không.
Sau này đừng xúi rau hẹ khác chui vào contest nữa nhé
xjIzSG9.png

Tuần này có nên làm quả contest nữa không ta, lỡ xuống tiếp 1300 chắc có nước bỏ nick voz cho đỡ nhục
6f4YXpQ.gif
Bài này dùng dfs với dp để calculate a longest length ở mỗi index thôi mà, còn ko cần phải maintain cái visited nữa vì nó đã natually tìm neighbor greater rồi.
Đang đi sửa cái xe ngồi bấm đt thôi, bài này medium
zFNuZTA.gif

Giải 500 bài medium rồi mà ko làm đc 2 bài contests thì đúng nhục làm vozliz dài dài
FfsqRRV.gif

via theNEXTvoz for iPhone
 
Bài này dùng dfs với dp để calculate a longest length ở mỗi index thôi mà, còn ko cần phải maintain cái visited nữa vì nó đã natually tìm neighbor greater rồi.
Đang đi sửa cái xe ngồi bấm đt thôi, bài này medium
zFNuZTA.gif

Giải 500 bài medium rồi mà ko làm đc 2 bài contests thì đúng nhục làm vozliz dài dài
FfsqRRV.gif

via theNEXTvoz for iPhone
456 bài
osCpCsi.png
Chưa 500 chưa tính
 
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.179
Quay lại
Lên đầu trang