第一周周题总结

  1. 跳跃游戏

 

思路

首先如果按照非遍历的方式,因为无法预料到后面的跳跃是否会跳到下标为0。所以由无法预料只能按照遍历求出最远距离。即直接记录每个元素所能到达的最远下标(因为目的则是跳到最远,如果每个元素都发挥最远实力,则最远的线路肯定会被包含进去),最后再将最远线路与最后下标比较。

难点:

采用遍历的思路  

2.统计封闭岛屿数量

  思路;

如按一般思路,将岛的形状找出来,再进行判断,但是尝试即可知道岛的形状需要用大量的循环语句和判断语句,而所有的循环可以用递归解决,则本题用递归

决定使用递归后,该题分为三步.

一:确定是否为封闭岛屿,

二:将岛屿的范围全改为1。(其中一可以和二同步)

三:继续判断至结束

其中最难的是判断是否为封闭岛屿。岛屿封闭与不封闭关键在于岛的边缘是否在边界上且是否为0。了解这点后,我们再看用递归怎么实现。回到本质,即四个方向元素为0或1.,则只需要从当前元素扩散到四个方向上的元素,再由四个方向的元素分别扩散到各自四个方向上,当遇到1或者边界为0时停止扩散。并且只要有一个边界为0就return false.

知识点

dfs:是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点.


总结

拿到题先不用着急写代码,如果发现按正常思路不能解决或者不好解决,尝试用简单粗暴的方法,如遍历。以及当需要用大量循环时可以尝试递归。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值