Leetcode - Frog Jump

My code:

public class Solution {
    public boolean canCross(int[] stones) {
        if (stones == null || stones.length == 0) {
            return false;
        }
        
        Map> map = new HashMap>();
        map.put(0, new HashSet());
        map.get(0).add(1);
        for (int i = 1; i < stones.length; i++) {
            map.put(stones[i], new HashSet());
        }
        
        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 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

你可能感兴趣的:(Leetcode - Frog Jump)