![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
lc
文章平均质量分 50
sanrenjianxin
这个作者很懒,什么都没留下…
展开
-
lc200. 岛屿数量(最基础的dfs)
给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。深度优先搜索(Depth First Search)简称深搜或者 DFS,是遍历。存储结构的一种算法,既适用于无向图(网),也适用于有向图(网)。那很明显本题就是无向图的搜索。此外,你可以假设该网格的四条边均被水包围。题解:先来一段dfs的定义。这就是经典的dfs套路了。输入:grid = [输入:grid = [原创 2022-10-04 15:58:14 · 97 阅读 · 1 评论 -
lc162. 寻找峰值(中等 )
这里关注到题目的一个条件 nums[-1] = nums[n] = -∞。所以往上坡走是一定可以找到山峰的,而往下坡走就不一定。因为我们是找山峰,所以很显然是和周围的元素比。那我们就和m+1比好了。你可以假设 nums[-1] = nums[n] = -∞。以示例1为例,开始l = 0,r = 3,m = 1。解释:3 是峰值元素,你的函数应该返回其索引 2。输入:nums = [1,2,1,3,5,6,4]解释:你的函数可以返回索引 1,其峰值元素为 2;输入:nums = [1,2,3,1]原创 2022-10-01 12:43:36 · 75 阅读 · 0 评论 -
lc611. 有效三角形的个数(中等)
众所周知三角形要满足两边之和大于第三边, 设三边为,a,b,c。需满足a+b>c,a+c>b,b+c>a。为了减少判断,我们令a原创 2022-10-01 11:03:06 · 121 阅读 · 0 评论 -
lc28. 找出字符串中第一个匹配项的下标(中等)-kmp算法详解
回溯j=0不行的原因其实是由于aac串子串aa中存在相等的前后缀a,回溯j=0会使我们漏掉文本串中已经匹配的a,此时我们将移动至1(即最长相等前后缀中前缀的下一个位置)就能使已经匹配的信息继续保持匹配。显然,若是一直相等下去,那么两个指针一直同时移动,随着i++,next也就++,j则一直标记着最长相等前后缀长度(也是其前缀下标+1)的位置。假如是暴力解法,当i = 2,j = 2时字符不相等,指针i会回溯到1 的位置,j回溯到0重新开始。同理,在每一个不匹配的状态下,j都会回到一个特定的位置。原创 2022-09-23 14:59:13 · 126 阅读 · 0 评论 -
lc34. 在排序数组中查找元素的第一个和最后一个位置(中等)
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。就可以得到题目要求的左右边界。输入:nums = [5,7,7,8,8,10], target = 8。输入:nums = [5,7,7,8,8,10], target = 6。如果数组中不存在目标值 target,返回 [-1, -1]。就能得到l为第一个大于等于target的值(原理在。输入:nums = [], target = 0。获得的r就为最后一个小于等于target的值。输出:[-1,-1]输出:[-1,-1]原创 2022-09-20 20:30:12 · 300 阅读 · 1 评论 -
lc35. 搜索插入位置(简单)
if语句限制l左边数一定小于target,right右边数一定大于target。假如数组为...rl...,则...r小于target,l...大于target,此时l是第一个大于target的位置,即需要插入的位置。若数组中数都比target小,则r = length-1,l=length,算法成立。输入: nums = [1,3,5,6], target = 5。输入: nums = [1,3,5,6], target = 2。输入: nums = [1,3,5,6], target = 7。原创 2022-09-20 19:53:54 · 376 阅读 · 0 评论