美文网首页程序员
力扣 403 青蛙过河

力扣 403 青蛙过河

作者: zhaojinhui | 来源:发表于2020-11-11 01:59 被阅读0次

题意:给定一个石头array,判定青蛙能否跳到最后一个石头

思路:

  1. 把stone的位置放入set
  2. 用两个stack,分别记录当前可跳到的位置,和跳到该位置的上一跳的步数
  3. 遍历stack,以及当前stack头部节点,并把它所能到达的stone加入stack,如果这个过程中遇到了最后一个stone返回true
  4. 否则返回false

思想:动态规划

复杂度:时间O(n^2),空间O(n)

class Solution {
    public boolean canCross(int[] stones) {
        
        for(int i=3;i<stones.length;i++)
        {
            if(stones[i] > stones[i-1] * 2)
            {
                return false;
            }
        }
        HashSet<Integer> hs = new HashSet<Integer>();
        for(int stone:stones)
        {
            hs.add(stone);
        }
        
        
        Stack<Integer> positions = new Stack<Integer>();
        Stack<Integer> jumpCounts = new Stack<Integer>();
        
        positions.add(0);
        jumpCounts.add(0);
        
        
        while(!positions.isEmpty())
        {
            int jump = jumpCounts.pop();
            int pos = positions.pop();
            
            for(int i=jump-1;i<=jump+1;i++)
            {
                if(i<=0)
                {
                    continue;
                }

                if(pos + i == stones[stones.length-1])
                {
                    return true;
                }
                else if(hs.contains(pos+i))
                {
                    positions.add(pos+i);
                    jumpCounts.add(i);
                }
                
            }
            
        }
        return false;
        
    }
}

相关文章

  • 力扣 403 青蛙过河

    题意:给定一个石头array,判定青蛙能否跳到最后一个石头 思路: 把stone的位置放入set 用两个stack...

  • leetcode403青蛙过河问题

    一.问题描述 一只青蛙正在过河。 河流分为x个单位,每个单位可能存在或不存在石头。 青蛙可以跳到石头上,但不能跳入...

  • 【底层思维】从本能谈起

    先讲一个故事。 一只蝎子要过河,就叫来青蛙,请青蛙背它过河。青蛙说:“那不行,我背你过河,你可不得咬我啊!”。蝎子...

  • 日更|微故事:两只青蛙过河

    故事:两只青蛙过河 有两只青蛙要过河,但河中间有一堆大石头,青蛙们只能跳到石头上才能过河。其中一只青蛙很自信地跳了...

  • 蝎子过河

    一只蝎子想要过河水,于是它来到岸边对青蛙说:“青蛙,你可以背我过河吗?" 青蛙说:“不可以,你肯定趁我游泳的时候蛰...

  • 不忘初心

    一只蝎子到了河边想过河,但不可以,因为它不能下水,之后他见到了一只青蛙,就问青蛙:“你可以背我过河吗?”青蛙说:“...

  • 江山易改,本性难移!

    一只蝎子到了河边想过河,但不可以,因为它不能下水,之后他见到了一只青蛙,就问青蛙:“你可以背我过河吗?” 青蛙说:...

  • 《HOW NASA BUILDS TEAMS》习书系列记录-6-

    ?️ & ? 一只蝎子要过河,但蝎子不会游泳,正当他要放弃的时候,一只青蛙游过来。蝎子喊到,青蛙先生,把我捎过河吧...

  • 青蛙和蝎子

    有只蝎子要过河,对青蛙说:“你驮我过河好不好?” 青蛙犯难的说:“我倒很乐意帮忙,但我怕你会蛰我!” “不会的,不...

  • 女版西门庆,就是要做个真的我

    有则寓言故事很有型,在此分享给痴男怨女,“一只蝎子无法过河,于是对在岸边的青蛙说能否带它过河,青蛙不肯,说道:俺游...

网友评论

    本文标题:力扣 403 青蛙过河

    本文链接:https://www.haomeiwen.com/subject/elokbktx.html