- 跳跃游戏
思路:
首先如果按照非遍历的方式,因为无法预料到后面的跳跃是否会跳到下标为0。所以由无法预料只能按照遍历求出最远距离。即直接记录每个元素所能到达的最远下标(因为目的则是跳到最远,如果每个元素都发挥最远实力,则最远的线路肯定会被包含进去),最后再将最远线路与最后下标比较。
难点:
采用遍历的思路
2.统计封闭岛屿数量
思路;
如按一般思路,将岛的形状找出来,再进行判断,但是尝试即可知道岛的形状需要用大量的循环语句和判断语句,而所有的循环可以用递归解决,则本题用递归。
决定使用递归后,该题分为三步.
一:确定是否为封闭岛屿,
二:将岛屿的范围全改为1。(其中一可以和二同步)
三:继续判断至结束
其中最难的是判断是否为封闭岛屿。岛屿封闭与不封闭关键在于岛的边缘是否在边界上且是否为0。了解这点后,我们再看用递归怎么实现。回到本质,即四个方向元素为0或1.,则只需要从当前元素扩散到四个方向上的元素,再由四个方向的元素分别扩散到各自四个方向上,当遇到1或者边界为0时停止扩散。并且只要有一个边界为0就return false.
知识点:
dfs:是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点.
总结:
拿到题先不用着急写代码,如果发现按正常思路不能解决或者不好解决,尝试用简单粗暴的方法,如遍历。以及当需要用大量循环时可以尝试递归。