博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]403. Frog Jump
阅读量:2782 次
发布时间:2019-05-13

本文共 1349 字,大约阅读时间需要 4 分钟。

用一个HashMap<Integer, HashSet<Integer>>记录位置index处前一步step是k时都失败的k的cache

public class Solution {    public boolean canCross(int[] stones) {        if (stones == null || stones[1] - stones[0] != 1) {            return false;        }        HashMap
> map = new HashMap(); return canCross(stones, 1, 1, map); } private boolean canCross(int[] stones, int index, int step, HashMap
> map) { if (index == stones.length - 1) { return true; } else if (step <= 0 || map.getOrDefault(index, new HashSet()).contains(step)) { return false; } boolean ret = false; for (int i = index + 1; i < stones.length; i++) { if (stones[index] + step == stones[i]) { ret |= canCross(stones, i, step, map); } else if (stones[index] + step + 1 == stones[i]) { ret |= canCross(stones, i, step + 1, map); } else if (stones[index] + step - 1 == stones[i]) { ret |= canCross(stones, i, step - 1, map); } else if (stones[index] + step + 1 < stones[i]) { break; } if (ret) { return true; } } HashSet
set = map.getOrDefault(index, new HashSet()); set.add(step); map.put(index, set); return false; }}

转载地址:http://hxhld.baihongyu.com/

你可能感兴趣的文章
后端必备 Git 分支开发:规范指南
查看>>
28岁华为员工工资表曝光,牛逼的人注定会牛逼!
查看>>
工作后我变强了,暂时没秃...
查看>>
完美,竟然用一个脚本就把系统升级到https了,且永久免费!
查看>>
3小时知乎疯转2W次,最终被所有大V封杀!!!
查看>>
如何设计订单系统?不妨看看这篇文章
查看>>
SpringBoot实现定时任务@EnableScheduling
查看>>
每秒10万次高并发订单业务,你怎么实现?
查看>>
强推一个基于SpringCloudAlibaba的代码生成器【附带源码+文档+视频】
查看>>
推荐一个C++练手项目,面试也可用
查看>>
ThreadPoolExecutor 深入解析
查看>>
华为宣布:免费培养2000名Java开发者
查看>>
腾讯面试官:如何停止一个正在运行的线程?我一脸蒙蔽。。。
查看>>
为什么 StringBuilder 不是线程安全的?
查看>>
Java必会的工具库,让你的代码量减少90%
查看>>
@Autowired注解到底怎么实现的,你能说清楚么?
查看>>
还在用 Guava Cache?它才是 Java 本地缓存之王!
查看>>
批处理框架 Spring Batch 这么强,你会用吗?
查看>>
牛啤!这个框架被大量使用,腾讯开源的RPC框架,阿里的Dubbo,都得感谢它!...
查看>>
一文看懂 Java 锁机制,写得太好了吧!
查看>>