Leetcode - Frog Jump

My code:

public class Solution {
    public boolean canCross(int[] stones) {
        if (stones == null || stones.length == 0) {
            return false;
        }
        
        Map<Integer, Set<Integer>> map = new HashMap<Integer, Set<Integer>>();
        map.put(0, new HashSet<Integer>());
        map.get(0).add(1);
        for (int i = 1; i < stones.length; i++) {
            map.put(stones[i], new HashSet<Integer>());
        }
        
        for (int i = 0; i < stones.length; i++) {
            int base = stones[i];
            for (Integer step : map.get(stones[i])) {
                int reach = base + step;
                if (reach == stones[stones.length - 1]) {
                    return true;
                }
                if (map.containsKey(reach)) {
                    Set<Integer> set = map.get(reach);
                    set.add(step);
                    set.add(step + 1);
                    if (step - 1 > 0) {
                        set.add(step - 1);
                    }
                }
            }
        }
        
        return false;
    }
}

reference:
https://discuss.leetcode.com/topic/59903/very-easy-to-understand-java-solution-with-explanations/2

没想出来。
感觉已经没有思考新题的能力了。。。
悲哀

Anyway, Good luck, Richardo! — 10/21/2016

    原文作者:Richardo92
    原文地址: https://www.jianshu.com/p/d5aa2c340858
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞