Làm sao để kiểm tra 1 tổ hợp tạo ra là thỏa mãn hay không? tổ hợp dấu ngoặc hợp lệ sẽ có số dấu mở ngoặc bằng dấu đóng ngoặc. và không có dấu đóng hoặc mở ngoặc nào bị dư thừa.
"((()))": hợp lệ
"())(()": không hợp lệ
Liệt kê tất cả các cặp dấu ngoặc hợp lệ dựa trên n cặp đầu vào Example
Vét cạn: Chúng ta có thể dùng đệ quy chạy để tạo ra các tổ hợp của các cặp và kiểm tra kết quả cuối cùng có thỏa mãn hay không. Cách này độ phức tạp sẽ là 2 mũ (2 * n). Làm sao để kiểm tra 1 tổ hợp tạo ra là thỏa mãn hay không? tổ hợp dấu ngoặc hợp lệ sẽ có số dấu mở ngoặc bằng dấu đóng ngoặc. và không có dấu đóng hoặc mở ngoặc nào bị dư thừa. "((()))": hợp lệ "())(()": không hợp lệ Merge k LinkedList thành 1 LinkedList theo thứ tự tăng dần Cách dễ nhất là chúng ta add tất cả các node vào 1 mảng phụ sau đó gọi hàm sort(). độ phức tạp là N*log(N). N là tổng số Node Cách 2: Loop N lần (N là tổng số Node) mỗi lần sẽ tìm node nhỏ nhất của k LinkedList, độ phức tạp sẽ là N * k Cách 3: Tối ưu quá trình tìm node nhỏ nhất khi duyệt qua k LinkedList bằng PriorityQueue. Các thao tác insert vào PriorityQueue sẽ có độ phức tạp là log(k) thay vì k như cách 1. Độ phức tạp sẽ là N * log(k) Code Editor
630. Course Schedule III
Đề bài yêu cầu tính số khóa học tối đa thỏa mãn yêu cầu. mỗi khóa học chứa thông tin độ dài mỗi khóa, thời gian phải kết thúc. Greedy solution: Chắc chắn bạn phải học những khóa có thời gian kết thúc gần trước, nghĩa là hãy sort các khóa học theo thời gian kết thúc. Duyệt các khóa học nà, lưu lại tổng thời gian tham gia khóa học và duration của khóa học vào priority queue sort theo duration tăng dần. Giả sử tổng thời gian khóa học là time, với mỗi khóa học i, nếu time + duration khóa học i <= thời gian kết thúc khóa học i thì ta sẽ thêm vào queue. Khi không thể thêm được vào queue lúc này ta kiểm tra với khóa học có thời gian duration nhỏ nhất, nếu ít hơn ta sẽ thay thế khóa học này bằng khóa học tối ưu hơn để giảm tổng thời gian mà vẫn có số khóa học tương đương 665. Non-decreasing Array
Bài yêu cầu chỉ được sửa một số trong array để trở thành array sort theo thứ tự tăng dần. Ta có thể dùng biến count để đếm số lần thay đổi để biến array đó thành sorted array từ 0 -> i sorted thì 0 ->i+1 sorted khi và chỉ khi nums[i+1] >= max, nếu nhỏ hơn gán nums[i+1] = max Khi viết ứng dụng android thì chắc hẳn chúng ta đều không xa lạ gì đến method findViewById. Khi mình mới làm quen với Android thì thấy việc này khá tẻ nhạt, khi số lượng view càng lớn thì số lượng những dòng findViewById sẽ càng tăng. Rất may có rất nhiều thư viện support để giảm bớt phần này, trước khi Kotlin ra đời chúng ta có thể xài 2 lib là butterknife và androidannotations. Sau đó thì mình chuyển qua code Kotlin thì việc xài kotlin-extensions để find view thật nhẹ nhàng bạn có thể access đến bất cứ các view thông qua id và không phải cast qua TextView hay Button.
Cho một số mảng gồm n số nguyên, tìm tất cả các bộ ba a, b, c duy nhất trong mảng sao cho a + b + c = 0 Lưu ý: các bộ 3 không được phép trùng lặp Code Editor
Cho 1 mảng số nguyên không trùng lặp, hãy tìm mảng con lớn nhất sao cho với mỗi Si và Sj thỏa mãn điều kiện Si chia hết cho Sj hoặc Sj chia hết cho Si. Nếu có nhiều mảng con cùng kích thước có thể lựa chọn tùy ý 1 đáp án. Cho một chuỗi s và một chuỗi t, kiểm tra xem s có phải là chuỗi con của t không. Chuỗi con là một chuỗi được tạo thành từ chuỗi gốc bằng cách xóa một số các ký tự mà không làm xáo trộn vị trí tương đối của các ký tự còn lại. (ví dụ "ace" là một phần sau của "abcde" trong khi "aec" thì không). Code Editor
Kiểm tra xem 1 số có phải là lũy thừa của 2 không I. Android COMPONENTS1. Kể tên các callback của activity lifecycle
onCreate -> onStart -> onResume -> onPause -> onStop -> onDestroy 2. onSaveInstanceState và onRestoreInstanceState được gọi khi nào, tại sao nó quan trọng? Khi target android P onSaveInstanceState được gọi sau onStop, trước đó từ Android 3.0 (HoneyComb) sẽ được gọi trước onStop nhưng không chắc chắn gọi trước hay sau onPause, onRestoreInstanceState được gọi sau onStart (chỉ gọi khi activity recreate). Khi các activity rơi vào trạng thái Stoped, Android sẽ luôn luôn gọi onSaveInstanceState để lưu các thông tin cần thiết vào bundle. Lý do của việc làm này là 1 process hoàn toàn có thể bị Android Framework quyết định giải phóng memory để nhường cho những ứng dụng khác cần thiết. Sau khi người dùng quay trở lại ứng dụng Android sẽ recreate lại activity, onRestoreInstanceState sẽ được call sau onStart |
Thời Gian
December 2021
Chủ ĐỀ
All
|