• 🚀 Đăng ký ngay để không bỏ lỡ những nội dung chất lượng! 💯 Hoàn toàn miễn phí!

Có Video Toán và thuật toán mỗi ngày

Giới thiệu t với m, ae xàm nghe vô test thuật toán cái nản hẳn
Ae off rồi dạo trước có trao đổi nhiều. Bôi đậm là sao?

Tức m mời 1 vài người trên Xàm rồi và test Thuật toán như qq.
 
near là đầu mảng con chứ duyệt nó sẽ có nhiều trường hợp, trường hợp đầu cài đặt nó duyệt 1 lần thì phải rùi mà.
uh cũng đc, tao lấy ý tưởng của mày mà improve cái near đi, nó ko cần thiết lắm, thay vì phải dùng far + 1 với near để check xem nó chạy xong cái xa nhất chưa thì mày chỉ cần check cái reach_end thôi, mỗi lần tìm thấy cái max nhất thì lại update điểm reach_end. khỏi cần phải nhảy lò cò như mày
Python:
 def jump(self, nums: List[int]) -> int:
            maxPoint = 0
            startPoint = 0
            step = 0
            reach_end = 0
            for i in range(0, len(nums) - 1):
                maxPoint = max(maxPoint, i + nums[i])
                if i == reach_end:
                    step += 1
                    reach_end = maxPoint
                    if reach_end >= len(nums) - 1:
                        break
            return step
 
Ae off rồi dạo trước có trao đổi nhiều. Bôi đậm là sao?

Tức m mời 1 vài người trên Xàm rồi và test Thuật toán như qq.
T đâu bôi đậm đâu dm tự nhiên nó đậm đó. Ý t là trước có giới thiệu vài ae trên LinkedIn đi test thử mà toàn fail. Nó tìm toàn cỡ Olympic các kiểu thì ae ở mẹ nước ngoài rồi
 
Bài này quy hoạch động hay sao ấy.
Moá nó, submit 4 lần mới pass

Python:
class Solution:
    def findNumberOfLIS(self, nums: List[int]) -> int:
        lengthArr = [1 for i in range(len(nums))]
        countArr =  [1 for i in range(len(nums))]
        for i in range(len(nums)):
            maxLength = 0
            count = 1
            for j in range(0, i):
                if nums[i] > nums[j]:
                    if lengthArr[j] == maxLength:
                        count += countArr[j]
                    if lengthArr[j] > maxLength:
                        maxLength = lengthArr[j]
                        count = countArr[j]
            lengthArr[i] = maxLength + 1
            countArr[i] = count
        count = 0
        maxResult = 0
        for i in range(len(lengthArr)):
            if lengthArr[i] == maxResult:
                count += countArr[i]
            if lengthArr[i] > maxResult:
                maxResult = lengthArr[i]
                count = countArr[i]
        return count
 
đéo làm bài à. Tao qua bài mới rồi https://leetcode.com/problems/jump-game/. Bài này tương tự bài trước nhưng cứ code cho nó bon mồm
làm jump game 2 trước r thì bài này dễ thôi
mẹ cái format code của xam khó nhìn vcc
Java:
class Solution {
    public boolean canJump(int[] nums) {
        int n = nums.length;
        if(n==1) return true;
        boolean[] dp = new boolean[n];
        for(int i = n-2;i>=0;i--){
            if (nums[i]>=n-i-1){
                dp[i]=true;
                continue;
            }
            else{
                for(int j = 1;j<=nums[i];j++){
                    dp[i] = dp[i] || dp[i+j];
                }
                   
            }
        }
        return dp[0];
    }
}
 
làm jump game 2 trước r thì bài này dễ thôi
mẹ cái format code của xam khó nhìn vcc
code của tao đây
Python:
class Solution:
    def canJump(self, nums: List[int]) -> bool:
        reach_end = nums[0]
        farest = nums[0]
        for i in range(len(nums)):
            if i + nums[i] > farest:
                farest = i + nums[i]
            if i == reach_end:
                if i == len(nums) - 1:
                    return True
                if farest <= i:
                    return False
                reach_end = farest
        return True
 
code của tao đây
Python:
class Solution:
    def canJump(self, nums: List[int]) -> bool:
        reach_end = nums[0]
        farest = nums[0]
        for i in range(len(nums)):
            if i + nums[i] > farest:
                farest = i + nums[i]
            if i == reach_end:
                if i == len(nums) - 1:
                    return True
                if farest <= i:
                    return False
                reach_end = farest
        return True

của tao

Python:
class Solution:
    def canJump(self, nums: List[int]) -> bool:
        for i in range( len(nums) ):
            if len(nums) - i - 1 == nums[i]:
                return True
        return False
 

Có thể bạn quan tâm

Top