国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

力扣(LeetCode)55

CodeSheep / 842人閱讀

摘要:解答解法一動態規劃。令為跳到第個位置是否可達。代碼這個時間復雜度有點大,看了下面的提示這個題其實是貪心算法。那么如何用貪心算法來做呢可以用一個變量來維護當前能夠到達的最遠節點坐標,初始時,即為點能到達的最遠節點。

題目地址:
https://leetcode-cn.com/probl...
題目描述:
給定一個非負整數數組,你最初位于數組的第一個位置。

數組中的每個元素代表你在該位置可以跳躍的最大長度。

判斷你是否能夠到達最后一個位置。

示例 1:

輸入: [2,3,1,1,4]
輸出: true
解釋: 從位置 0 到 1 跳 1 步, 然后跳 3 步到達最后一個位置。
示例 2:

輸入: [3,2,1,0,4]
輸出: false
解釋: 無論怎樣,你總會到達索引為 3 的位置。但該位置的最大跳躍長度是 0 , 所以你永遠不可能到達最后一個位置。

解答:
解法一:動態規劃。
令dp[i]為跳到第i個位置是否可達。
那么dp[0] = true。
對于dpi
如果在存在一個k(k>=0,k < i)使得dp[k] = true (即到k是可達的)并且 nums[k]+k>=i(從k可以跳到i)
那么dp[i] = true。
這個時間復雜度為O(N2)。

java ac代碼:

class Solution {
    
    public boolean canJump(int[] nums) {
        
        boolean[]dp = new boolean[nums.length];
        dp[0] = true;
        for(int i = 1;i < nums.length;i++)
        {
            for(int k = 0;k <= i-1;k++)
                if(dp[k]&&nums[k] >= i-k)
                {
                    dp[i] = true;
                    break;
                }
        }
        
        return dp[nums.length-1];
        
    }
    
    
}

這個時間復雜度有點大,看了下面的提示這個題其實是貪心算法。
那么如何用貪心算法來做呢?
可以用一個max變量來維護當前能夠到達的最遠節點坐標,初始時max=nums[0],即為0點能到達的最遠節點。
然后從1開始(i=1...nums.length-1),如果max >= i代表能夠到達i節點,如果nums[i] + i > max代表
從這個點能夠到達超過max的點,那么就更新max為nums[i] + i。
這樣一來每個節點只被訪問一次,時間復雜度為O(N)。

java ac代碼:

class Solution {
    
    public boolean canJump(int[] nums) {
        
        //max為當前最大可達的位置
        int max = nums[0];
        int len = nums.length;
        
        for(int i = 1;i <= max && i < len ;i++)
            if(nums[i] + i > max)
            max = nums[i]+i;
        return max >= nums.length-1;
        
    }
    
    
}


文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73753.html

相關文章

  • 力扣(LeetCode)45

    摘要:數組中的每個元素代表你在該位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數到達數組的最后一個位置。示例輸入輸出解釋跳到最后一個位置的最小跳躍數是。不過可惜的是復雜度過大,為,用例不通過。也只訪問一次,時間復雜度為。 題目地址:https://leetcode-cn.com/probl...題目描述: 給定一個非負整數數組,你最初位于數組的第一個位置。 數組中的每個元素代表你在該位...

    wangshijun 評論0 收藏0
  • 力扣(LeetCode)357

    摘要:示例輸入輸出解釋答案應為除去外,在區間內的所有數字。即這個數最多位。解答這一題就是利用回溯法求組合數,從這個集合中求。 題目地址:https://leetcode-cn.com/probl...題目描述:給定一個非負整數 n,計算各位數字都不同的數字 x 的個數,其中 0 ≤ x < 10的n次方 。 示例: 輸入: 2輸出: 91 解釋: 答案應為除去 11,22,33,44,55,...

    JasinYip 評論0 收藏0
  • 力扣(LeetCode)310

    摘要:圖因此可以成為樹,在所有可能的樹中,具有最小高度的樹被稱為最小高度樹。給出這樣的一個圖,寫出一個函數找到所有的最小高度樹并返回他們的根節點。因此使用一個數組代表每個節點的入度,若入度為就是葉子節點。 題目地址:https://leetcode-cn.com/probl...題目描述: 對于一個具有樹特征的無向圖,我們可選擇任何一個節點作為根。圖因此可以成為樹,在所有可能的樹中,具有最小...

    amuqiao 評論0 收藏0
  • LeetCode天梯>Day026 反轉鏈表(遞歸法+(迭代法)雙鏈表法) | 初級算法 | Py

    摘要:關于遞歸這里提一兩點遞歸基本有這幾步遞歸的模板,終止條件,遞歸調用,邏輯處理。 ?作者簡介:大家好,我是車神哥,府學路18號的車神? ?個人主頁:應無所住而生...

    imingyu 評論0 收藏0

發表評論

0條評論

CodeSheep

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<