frog-jump
Posted 笨鸟居士的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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; } } */
以上是关于frog-jump的主要内容,如果未能解决你的问题,请参考以下文章