
数据结构
文章平均质量分 54
歪嗯waien
这个作者很懒,什么都没留下…
展开
-
刷题:礼物的最大价值(动态规划)
在一个m*n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?链接https//leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof。,只是需要把路过结点的值相加,选取上方和左侧最大的点作为子结构即可。解释路径1→3→5→2→1可以拿到最多价值的礼物。...原创 2022-07-20 19:04:16 · 187 阅读 · 0 评论 -
刷题:不同路径(动态规划)
很显然问题满足最优子结构和重叠子问题,去往右下方的数量等于自己上方和左边结点的数量之和(如果没有越界的话),第一行以及第一列由于只能向右和向下走,故数量均为1,初始化以后运算即可。一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。1.向右->向下->向下。2.向下->向下->向右。3.向下->向右->向下。输入m=3,n=7。输入m=3,n=2。输入m=7,n=3。输入m=3,n=3。...原创 2022-07-20 17:27:26 · 115 阅读 · 0 评论 -
替换后的最长重复字符(变长的滑动窗口)
这题的活动窗口初始长度为0,最大长度是相同的字符串+k,在不断遍历的过程中,需要用maxn去记录最大字符串,才能约束left左移。给你一个字符串s和一个整数k。滑动窗口是一种基于双指针的一种思想,两个指针指向的元素之间形成一个窗口。将中间的一个'A'替换为'B',字符串变为"AABBBBA"。窗口有两类,一种是固定大小类的窗口,一类是大小动态变化的窗口。解释用两个'A'替换为两个'B',反之亦然。输入s="AABABBA",k=1。输入s="ABAB",k=2。...原创 2022-07-19 14:44:54 · 187 阅读 · 0 评论 -
找到字符串中所有字母异位词(暴力搜索、滑动窗口、优化的滑动窗口三种解法)
给定两个字符串s和p,找到s中所有p的异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。起始索引等于0的子串是"cba",它是"abc"的异位词。起始索引等于6的子串是"bac",它是"abc"的异位词。起始索引等于0的子串是"ab",它是"ab"的异位词。起始索引等于1的子串是"ba",它是"ab"的异位词。起始索引等于2的子串是"ab",它是"ab"的异位词。输入s="abab",p="ab"...原创 2022-07-19 12:08:46 · 505 阅读 · 0 评论 -
合并两个有序链表(迭代、递归两种解法)
递归的话,难点在于判断返回值,其中一方链表遍历结束或者它本来就是空链表的话,直接返回另一个链表即可,至于下面的比较数值,其实就是把每个结点都拆分出来,排好序,最后回溯依次连接,再整体返回。迭代比较好理解,重新建立一个链表,然后list1与list2相比较,将数值小的那个连在新链表的后面,当一个链表全部遍历后直接把另一个接在末尾即可。输入l1=[1,2,4],l2=[1,3,4]输入l1=[],l2=[0]输入l1=[],l2=[]输出[1,1,2,3,4,4]...原创 2022-07-18 12:19:28 · 273 阅读 · 0 评论 -
刷题:有效的数独
题目很好理解就不过多赘述,并且也讲明了解题思路,就是判断三次,分别是每行每列以及3x3的方块。建立三个数组,用哈希表的方式来统计,如果所对应的值>1就说明不符合条件。解释除了第一行的第一个数字从5改为8以外,空格内其他数字均与示例1相同。只需要根据以下规则,验证已经填入的数字是否有效即可。数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。只需要根据以上规则,验证已经填入的数字是否有效即可。一个有效的数独(部分已被填充)不一定是可解的。数字1-9在每一行只能出现一次。...原创 2022-07-16 15:20:12 · 81 阅读 · 0 评论 -
刷题:岛屿数量(深搜)
找到值为‘1’的点,岛屿数量++,然后通过深搜找出它的其他相连陆地,并把值改为非‘1’即可,就可以防止重复统计。原创 2022-07-16 12:00:31 · 98 阅读 · 0 评论 -
刷题:图像渲染(深搜、广搜两种解法)
输入image=[[1,1,1],[1,1,0],[1,0,1]],sr=1,sc=1,newColor=2。输入image=[[0,0,0],[0,0,0]],sr=0,sc=0,newColor=2。解析在图像的正中间,(坐标(sr,sc)=(1,1)),在路径上所有符合条件的像素点的颜色都被更改成2。输出[[2,2,2],[2,2,0],[2,0,1]]输出[[2,2,2],[2,2,2]]最后返回经过上色渲染后的图像。......原创 2022-07-16 11:27:17 · 206 阅读 · 0 评论 -
刷题:验证二叉搜索树
想出了两种方法,第一种就是边遍历边判断,每一个结点的值都是介于upper和lower之间的,如果超出范围就返回false。第二种方法是大家很熟悉的中序遍历,最后遍历出来的值一定是一个有序递增的数组,根据这个数组是否有序即可判断是否是二叉搜索树。...原创 2022-07-15 10:42:52 · 186 阅读 · 0 评论 -
刷题: 复杂链表的复制
请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。示例 1: 示例 2: 示例 3: 示例 4:解释:给定的链表为空(空指针),因此返回 null。 提示:-10000 ...原创 2022-07-13 20:35:12 · 97 阅读 · 0 评论 -
二叉树的层序遍历(广搜)
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。示例 1:示例 2: 示例 3:提示:树中节点数目在范围 [0, 2000] 内-1000原创 2022-07-13 14:16:21 · 183 阅读 · 0 评论 -
插入排序(简单版)
一、特点 插入排序是从右至左比,如果自己是是这一段数中的最大值那么就不需要移动了,如果有比自己大的值就开始交换,直至找到正确的位置。 还有一个小妙招,我们平时玩的斗地主,摸完牌之后的排序其实就是插入排序呢。二、代码......原创 2022-07-13 10:04:42 · 150 阅读 · 0 评论 -
排序之选择排序
一、思想 选择排序是一种很简单且易于理解的排序,不断遍历,每一次找到最小值所在坐标记录下来,最后与前面的未排序的数进行交换,并且固定下来。二、代码原创 2022-07-12 20:49:25 · 61 阅读 · 0 评论 -
最大字段和(动态规划)
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 1:示例 2:示例 3:提示:1原创 2022-07-12 19:48:23 · 312 阅读 · 0 评论 -
冒泡排序(简单版)
一、思想 假设数组为【8,4,7,2,1】 冒泡冒泡,顾名思义,就是把数字看成泡泡冒出去,相邻的数字相比较,如果左边比右边大则交换,然后向后比较。 第一轮:【4,8,7,2,1】->【4,7,8,2,1】->【4,7,2,8,1】->【4,7,2,1,8】结束 直至经过数组长度 - 1轮就结束排序,并且每一轮都会将位置不正确但数字最大的数冒到后面,这样后一轮排序时就可以不用考虑那些位置......原创 2022-07-12 14:28:50 · 258 阅读 · 0 评论