成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

力扣(LeetCode)55

CodeSheep / 847人閱讀

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

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

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

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

示例 1:

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

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

解答:
解法一:動態(tài)規(guī)劃。
令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。
這個時間復(fù)雜度為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];
        
    }
    
    
}

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

java ac代碼:

class Solution {
    
    public boolean canJump(int[] nums) {
        
        //max為當(dāng)前最大可達的位置
        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;
        
    }
    
    
}


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/73753.html

相關(guān)文章

  • 力扣(LeetCode)45

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

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

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

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

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

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

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

    imingyu 評論0 收藏0

發(fā)表評論

0條評論

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