算法检索

有效三角形leetcode611 ->双指针,二分
二分法详解
注意点(页面查找关键字)
1、while有无等号,对应的边界情况
2、使得区间不断向右收缩 ->区间到底往右还是往左

双指针->leetcode救生艇881
快慢指针->删除列表重复项判断链表是否有环

回溯是一种算法思想, 可由迭代和递归实现,迭代和递归是算法结构。递归里一定有迭代,能用迭代的不用递归,递归调用函数,太深时时间开销大,并且递归太深容易造成堆栈的溢出。用空间换取时间,消除递归,空间换时间取消递归
回溯进行剪枝,减小无效搜索,无效时先return

搜是否存在某路径;是否存在和为多少的路径(有多少个)等等
1、退出条件,何时return
2、 多个条件 or 在一起
上下左右走

dfs(i + 1, j, k + 1) or dfs(i - 1, j, k + 1) or dfs(i, j + 1, k + 1) or dfs(i, j - 1, k + 1)

其中k+1用来记录走了多少步了,
于是判断条件

if k == len(word) - 1: return True  #走到了最末一步就返回ture

剪枝,此步骤放到上下左右走的前面,提前return false实现剪枝不再进行上下左右

if not 0 <= i < len(board) or not 0 <= j < len(board[0]) or board[i][j] != word[k]: return False

在什么萨迦寺啊是

回溯恢复,将状态还原
二进制手表
骑士巡逻
在这里插入图片描述在这里插入图片描述

BFS和DFS代码实现的具体差别,leetcode员工重要性
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值