leetcode hard模式专杀之45. Jump Game II
来源:互联网 发布:淘宝买三唑仑输入什么 编辑:程序博客网 时间:2024/04/29 06:59
这道题跟其父题Jump Game都属于实现出来不难,但是通过OJ不容易的题目,反正我是这样感觉的,因为第一版我很快都写出来了,但是通过OJ却弄了七八次,蛋疼无比,不过总算是没有看答案,坚持自己写出来了,能仔细琢磨总结其经验,也不枉花了这么多时间。原本以为用其父题目稍微改改代码就能完成,后来发现不是这样,时间复杂度完全通不过,于是苦苦琢磨其他方式。最后思路大概是这样的,从第一个开始通过i+nums[i]获得该位置能跳跃到的index范围,然后删除i这个位置的节点(本质上是删除这个起步位置的集合,只不过第一次这个集合只有一个元素,可想而知第二部很可能有多个起跳位置,那就要删除多个),由于数组是不能做这样的操作的,故而转成java中的List来操作。为什么要删除,其实也是为了下一次计算的表达式能够更好看,能少跑几个节点。当然在第k次这样的操作的时候,可能有多个元素需要被从list删除,那么一直到list被删光,删除的次数就是jump的次数,不知道描述清楚了没有,直接上代码:
public class Solution { public int jump(int[] nums) { List<Integer> numsList = new ArrayList<>(); if(nums.length==1){ return 0; } for(int num: nums){ numsList.add(num); } int secSize = 1; int upper = 0; int count = 0; while(true){ for(int i=0; i<secSize; i++){ int newIndex = i+numsList.get(i); if(newIndex > upper){ upper = newIndex; if(upper>=numsList.size()-1){ return count+1; } } } for(int i=0;i<secSize;i++){ numsList.remove(0); } count++; int oldSecSize = secSize; secSize = upper-secSize+1; upper = upper-oldSecSize; } }}
阅读全文
0 0
- leetcode hard模式专杀之45. Jump Game II
- leetcode hard模式专杀之55. Jump Game
- 【LeetCode】45. Jump Game II (Hard)
- Leetcode 45. Jump Game II (Hard) (cpp)
- LeetCode hard 45. Jump Game II
- 45. Jump Game II Hard
- [Leetcode 45, Hard] Jump Game II
- leetcode之Jump Game && Jump Game II
- Leetcode之Jump Game & Jump Game II
- LeetCode之Jump Game II
- 【Leetcode】之Jump Game II
- leetcode之jump game II
- Hard-题目23:45. Jump Game II
- LeetCode --- 45. Jump Game II
- LeetCode 45.Jump Game II
- [Leetcode] 45. Jump Game II
- [leetcode] 45.Jump Game II
- [leetcode] 45.Jump Game II
- 如何解决loadrunner回放日志中的乱码问题
- android 图片转换
- Android 自定义锁屏 监听系统消息推送
- 1.4 jQuery对象转化成DOM对象
- 自己动手写操作系统(一)
- leetcode hard模式专杀之45. Jump Game II
- STM32 DMA的特性
- 类边界
- mfc多页面之间的跳转实现
- Supervised Learning 001: k-Nearest Neighbor
- 386. Lexicographical Numbers
- Java获取本地IP和计算机名
- Python在函数中使用*和**接收元组和列表
- bzoj 1297 [SCOI2009]迷路