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

資訊專(zhuān)欄INFORMATION COLUMN

[leetcode] 403. Frog Jump

mo0n1andin / 2638人閱讀

摘要:還有一個(gè)石頭可能由之前的多個(gè)石頭到達(dá),這又是可以?xún)?yōu)化的地方。當(dāng)前結(jié)果可由之前的結(jié)果得出,且有重復(fù)的搜索方法,就需要用。

[鏈接描述]leetcode 題目。

有點(diǎn)類(lèi)似于jump game, 只不過(guò)這里對(duì)步數(shù)有了隱形的要求,當(dāng)前步數(shù)和之前步數(shù)有關(guān)。
如果我們用brute force的方法來(lái)解,每一步有三種可能,一共n個(gè)石頭,時(shí)間復(fù)雜度就是O(3^n)。
這其中有很多步數(shù)是多余的,第i個(gè)石頭無(wú)法從任何一個(gè)石頭到達(dá),那么我們應(yīng)該立即中止搜尋。
還有一個(gè)石頭可能由之前的多個(gè)石頭到達(dá),這又是可以?xún)?yōu)化的地方。
當(dāng)前結(jié)果可由之前的結(jié)果得出,且有重復(fù)的搜索方法,就需要用DP。

public class Solution {
    public boolean canCross(int[] stones) {
        if(stones[1] != 1) return false;
        int n = stones.length;
        int[][] dp = new int[n][n];     // for ith stones, j means maximun previous steps
        for(int i=0; i stones[i] + j + 1){    // too far
                dp[i][j] = 0;
                continue;
            } else {   // j-1, j, j+1 three possibility 
                if(canCross(dp, stones, k, stones[k] - stones[i], n)){
                    dp[i][j] = 1;
                    return true;
                }
            }
        }
        
        dp[i][j] = 0;
        return false;
    }
}
public class Solution {
    public boolean canCross(int[] stones) {
        if(stones == null || stones.length == 0) return false;
        int n = stones.length;
        if(n == 1)  return true;
        if(stones[1] != 1) return false;
        if(n == 2)  return true;
        HashSet set = new HashSet<>();
        for(int i = 0; i < n; i++){
            if(i > 3 && stones[i] > stones[i-1]*2) return false;
            set.add(stones[i]);
        }
        
        return canCross(set, stones[n-1], 1, 1);
    }
    
    public boolean canCross(HashSet set, int last, int pos, int jump){
        if(pos + jump == last || pos + jump + 1 == last || pos + jump -1 == last){
            return true;
        }
        if(set.contains(pos + jump + 1)){
            if(canCross(set, last, pos+jump+1, jump+1)) return true;
        }
        if(set.contains(pos + jump)){
            if(canCross(set, last, pos+jump, jump)) return true;
        }
        if(jump > 1 && set.contains(pos + jump-1)){
            if(canCross(set, last, pos+jump-1, jump-1)) return true;
        }
        return false;
    }
}

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/66292.html

相關(guān)文章

  • [LeetCode] 403. Frog Jump

    Problem A frog is crossing a river. The river is divided into x units and at each unit there may or may not exist a stone. The frog can jump on a stone, but it must not jump into the water. Given a li...

    趙連江 評(píng)論0 收藏0
  • leetcode403. Frog Jump

    摘要:石頭的位置用整數(shù)數(shù)組來(lái)表示。廣度優(yōu)先遍歷可以從起點(diǎn)開(kāi)始,對(duì)從該點(diǎn)出發(fā)的所有可能步數(shù)進(jìn)行遍歷,并更新從該點(diǎn)可達(dá)的點(diǎn)的所有的可行步數(shù)。利用數(shù)據(jù)結(jié)構(gòu)來(lái)記錄該結(jié)果,其中的為的數(shù),它的對(duì)應(yīng)的是從該出發(fā)的所有的上一步的步長(zhǎng)。 題目要求 A frog is crossing a river. The river is divided into x units and at each unit the...

    Soarkey 評(píng)論0 收藏0
  • leetcode45. Jump Game II

    摘要:轉(zhuǎn)換為廣度優(yōu)先算法即為我們只需要找到每一步的開(kāi)始節(jié)點(diǎn)和結(jié)束下標(biāo),找到下一輪遍歷的最大下標(biāo),如果該下標(biāo)超過(guò)了數(shù)組長(zhǎng)度,那么結(jié)束遍歷,返回步數(shù),否則將上一輪的最終節(jié)點(diǎn)加一作為起始節(jié)點(diǎn),并將下一輪最大下標(biāo)最為結(jié)束節(jié)點(diǎn),繼續(xù)遍歷。 題目要求 Given an array of non-negative integers, you are initially positioned at the ...

    shiguibiao 評(píng)論0 收藏0
  • LeetCode[45] Jump Game II

    摘要:復(fù)雜度思路每次設(shè)置一個(gè)窗口,觀(guān)察在這一步下能到達(dá)的最遠(yuǎn)距離,不斷的移動(dòng)這個(gè)窗口。計(jì)數(shù),需要移動(dòng)幾次,才能覆蓋到末尾的值。 LeetCode[45] Jump Game II Given an array of non-negative integers, you are initially positioned at the first index of the array. Eac...

    keelii 評(píng)論0 收藏0
  • [LintCode/LeetCode] Jump Game I & II

    摘要:建立動(dòng)規(guī)數(shù)組,表示從起點(diǎn)處到達(dá)該點(diǎn)的可能性。循環(huán)結(jié)束后,數(shù)組對(duì)所有點(diǎn)作為終點(diǎn)的可能性都進(jìn)行了賦值。和的不同在于找到最少的步數(shù)。此時(shí)的一定是滿(mǎn)足條件的最小的,所以一定是最優(yōu)解。 Jump Game Problem Given an array of non-negative integers, you are initially positioned at the first index...

    rose 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<