随笔分类 -  数据结构与算法

摘要:这道题可以看成多起点多终点的最短路径问题。这种情况我们可以使用BFS(广度优先搜索),把起点全部push到队列里面去,下一步走到终点上的放就找到路径了,就是一个BFS找最短路径的问题。前提是知道哪部分是起点,哪部分是终点。 阅读全文
posted @ 2022-06-07 23:22 okokabcd 阅读(116) 评论(0) 推荐(0)
摘要:回溯+递归来解决八皇后问题 阅读全文
posted @ 2022-06-06 22:03 okokabcd 阅读(148) 评论(0) 推荐(0)
摘要:还是用回溯法,定义一个二维数组存储访问标记,在对任意位置进行深度优先搜索时,先将当前位置为已访问,以避免重复遍历,在所有的可能都搜索完成后,再改回当前位置为未访问,防止干扰其它位置搜索当前位置。 阅读全文
posted @ 2022-06-05 22:30 okokabcd 阅读(114) 评论(0) 推荐(0)
摘要:用回溯方法解决组合问题,类似排列,排列回溯的是交换的位置,而组合回溯的是否把当前的数字加入结果中。 阅读全文
posted @ 2022-06-04 14:17 okokabcd 阅读(71) 评论(0) 推荐(0)
摘要:使用回溯法解决此问题,对于每一个当前位置i,我们可以将其与之后的任意位置交换,然后继续处理位置i+1,直到处理到最后一位。为了防止我们每次遍历时都要新建一个子数组储存位置i之前已经交换好的数字,我们就利用回溯法,只对原数组进行修改,在递归完成后再修改回来。 阅读全文
posted @ 2022-06-03 23:10 okokabcd 阅读(61) 评论(0) 推荐(0)
摘要:逆向思维,假设海水涨潮的时候,太平洋和大西洋的水能漫到陆地的最高点是多少,分别记录下来。假设水在到达最高点后不在继续漫了。这时分别记录下太平洋和大西洋的水能到达的位置。再取他们公共的部分就是答案了。 阅读全文
posted @ 2022-06-02 14:31 okokabcd 阅读(117) 评论(0) 推荐(0)
摘要:每个人看作是一个点,每个人与他人的联系看作是一条线,即n条线,包括自己与自己的关系。这样每个节点最多n条边最少1条边。 阅读全文
posted @ 2022-06-01 20:19 okokabcd 阅读(99) 评论(0) 推荐(0)
摘要:搜索类的题,这题可以用深度优先搜索,定义一个主函数和一个辅函数,主函数用于遍历所有的搜索位置,判断是否可以开始搜索,辅函数则负责深度优先搜索的递归调用。 阅读全文
posted @ 2022-05-31 20:42 okokabcd 阅读(90) 评论(0) 推荐(0)
摘要:号称leetcode守门员的题。中位数可以来自于同一个数组,也可以来自于两个数组,可以是一个数,也可以是两个数。 阅读全文
posted @ 2022-05-30 21:10 okokabcd 阅读(173) 评论(0) 推荐(0)
摘要:题目中是有序数组,每个元素出现2次,假设数组索引i是偶数,如果nums[i] == nums[i+1],说明那个单独出现的元素在i的右边;反之在i的左边 阅读全文
posted @ 2022-05-29 14:07 okokabcd 阅读(70) 评论(0) 推荐(0)
摘要:二分查找,循环结束条件和内部比较时到底加不加等号老是分不清,每次都得通过调试 阅读全文
posted @ 2022-05-28 17:57 okokabcd 阅读(65) 评论(0) 推荐(0)
摘要:即使数组被旋转过,仍可以使用数组的递增性,使用二分查找来解决此问题。leetcode 81. Search in Rotated Sorted Array II 搜索旋转排序数组 II(中等) 阅读全文
posted @ 2022-05-27 18:34 okokabcd 阅读(60) 评论(0) 推荐(0)
摘要:使用二分查找找左右区间。lower_bound返回的是开始的第一个满足条件的位置,upper_bound返回的是第一个不满足条件的位置。所以当两个返回值相等的时候表示没有找到,找到了需要返回的是{left, right - 1} 阅读全文
posted @ 2022-05-26 13:42 okokabcd 阅读(68) 评论(0) 推荐(0)
摘要:了解二分法和牛顿迭代法两个思路来求方程根 阅读全文
posted @ 2022-05-25 15:08 okokabcd 阅读(94) 评论(0) 推荐(0)
摘要:使用常规思路桶排序解决或根据题目限定条件的另一种思路,leetcode 75. Sort Colors 颜色分类 阅读全文
posted @ 2022-05-24 12:56 okokabcd 阅读(95) 评论(0) 推荐(0)
摘要:用桶排序来解决这个问题。使用hashmap来统计字符出现的频率,统计完再构建一个以频率为key的顺序队列,然后再出队列,出队列的时候把字符按频数追加到字符串返回值上。 阅读全文
posted @ 2022-05-23 13:55 okokabcd 阅读(79) 评论(0) 推荐(0)
摘要:本题重点理解桶排序的思路,还有就是学习PriorityQueue类型,以前都没用过。leetcode 347. Top K Frequent Elements 前 K 个高频元素 阅读全文
posted @ 2022-05-22 12:23 okokabcd 阅读(106) 评论(0) 推荐(0)
摘要:理解为什么用快速选择来解决这个问题是关键,重点是要理解快速排序 阅读全文
posted @ 2022-05-21 14:29 okokabcd 阅读(79) 评论(0) 推荐(0)
摘要:一、题目大意 https://leetcode.cn/problems/longest-word-in-dictionary-through-deleting 给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary 中最长的字符串,该字符串可以通过删除 s 中 阅读全文
posted @ 2022-05-20 12:39 okokabcd 阅读(131) 评论(0) 推荐(0)
摘要:一、题目大意 https://leetcode.cn/problems/linked-list-cycle-ii/ 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为 阅读全文
posted @ 2022-05-19 13:04 okokabcd 阅读(101) 评论(0) 推荐(0)