frog-jump

复制代码
https://leetcode.com/problems/frog-jump/

// 受以下网页启发,用递归可行
// https://discuss.leetcode.com/topic/59337/easy-version-java

public class Solution {
    Map mp;
    private int[] stones;
    public boolean canCross(int[] s) {
        stones = s;
        
        if (stones[1] != 1) {
            return false;
        }
        if (stones.length < 3) {
            return true;
        }
        mp = new HashMap();
        Set st = new HashSet();
        st.add(1);
        mp.put(1, st);
        for (int i=2; i<stones.length; i++) {
            Set newst = new HashSet();
            boolean isNewst = false;
            
            for (int j=1; j<i; j++) {
                Object obj = mp.get(j);
                if (obj == null) {
                    continue;
                }
                Set tmpst = (Set) obj;
                int dist = stones[i] - stones[j];
                
                for (int k=-1; k<=1; k++) {
                    if (tmpst.contains(dist+k)) {
                        newst.add(dist);
                        isNewst = true;
                    }
                }
            }
            
            if (isNewst) {
                mp.put(i, newst);
            }
        }
        
        if (mp.get(stones.length-1) != null) {
            return true;
        }
        else {
            return false;
        }
    }
    
}

/*
// 以下解法复杂性太高
public class Solution {
    private int[] stones;
    public boolean canCross(int[] s) {
        stones = s;
        
        if (stones[1] != 1) {
            return false;
        }
        if (stones.length < 3) {
            return true;
        }
        return impl(1, 1);
    }
    
    boolean impl(int pos, int step) {
        if (pos == stones.length - 1) {
            return true;
        }
        for (int i=pos+1; i<stones.length; i++) {
            int dist = stones[i] - stones[pos];
            if (dist >= step - 1 && dist <= step + 1) {
                if (impl(i, dist)) {
                    return true;
                }
            }
        }
        return false;
    }
}
*/
复制代码

 

posted @   blcblc  阅读(432)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示