随笔分类 -  算法

摘要:递归 Recursion 递归函数:调用自己的函数。 递归算法:大问题依赖于小问题,先递归函数求解小问题 一般算法中的递归指的是递归函数。 深度优先搜索 Depth First Search 递归函数实现,在搜索过程中优先搜索更深的点而不是同层的点的算法。 也可以用栈代替递归函数,不过一般是都递归实 阅读全文
posted @ 2021-12-26 17:45 言思宁 阅读(478) 评论(0) 推荐(0) 编辑
摘要:喧闹和富有 题目:喧闹和富有 有一组 n 个人作为实验对象,从 0 到 n - 1 编号。 给你一个数组 richer ,其中 richer[i] = [ai, bi] 表示 person ai 比 person bi 更有钱。 另给你一个整数数组 quiet ,其中 quiet[i] 是 pers 阅读全文
posted @ 2021-12-24 13:23 言思宁 阅读(18) 评论(0) 推荐(0) 编辑
摘要:课程表 题目:课程表 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 阅读全文
posted @ 2021-12-23 12:26 言思宁 阅读(40) 评论(0) 推荐(0) 编辑
摘要:外星人字典 题目:外星文字典 给定一个字符串列表 words ,作为这门语言的词典,words 中的字符串已经 按这门新语言的字母顺序进行了排序 。 示例 1: 输入:words = ["wrt","wrf","er","ett","rftt"] 输出:"wertf" 示例2: 输入:words=[ 阅读全文
posted @ 2021-12-22 14:35 言思宁 阅读(87) 评论(0) 推荐(0) 编辑
摘要:重建序列 题目:重建序列 判断原始的序列 org 是否可以从序列集 seqs 中唯一地重建 。 重建 是指在序列集 seqs 中构建最短的公共超序列,即 seqs 中的任意序列都是该最短序列的子序列 案例 输入: org = [4,1,5,2,6,3], seqs = [[5,2,6,3],[4,1 阅读全文
posted @ 2021-12-21 13:35 言思宁 阅读(285) 评论(0) 推荐(0) 编辑
摘要:单词接龙 题目:单词接龙 给你两个单词 beginWord 和 endWord 和一个字典 wordList ,找到从 beginWord 到 endWord 的最短转换序列中的单词数目,转换规则如下: 每次转换只能改变一个字母。 转换过程中的中间单词必须是字典 wordList 中的单词。 如果不 阅读全文
posted @ 2021-12-19 19:18 言思宁 阅读(34) 评论(0) 推荐(0) 编辑
摘要:拓扑排序 1. 拓扑排序的定义 拓扑排序:无环,含有依赖的有向图 算法实现: 1. 统计每个点的入度,以及所有的连边 2. 将入度为0的点放入队列 3.从队列中取出一个点,将其连边的入度-1 4. 一旦有新的入度为0的点,放入队列中,重复3-4 则队列出队的顺序就是拓扑排序。 2. 案例 题目:课程 阅读全文
posted @ 2021-12-19 19:08 言思宁 阅读(92) 评论(0) 推荐(0) 编辑
摘要:克隆图 题目:克隆图 给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。 图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。 class Node { public int val; public List<Node> neighbors; } 阅读全文
posted @ 2021-12-17 12:43 言思宁 阅读(41) 评论(0) 推荐(0) 编辑
摘要:图的最短路径 1. 简单图 没有权重; 没有方向; 两点之间最多只有一条边; 没有自连接; 2. 简单图的最短路径:BFS 题目:无向图中的最短路径 给定一个无向图, 图中所有边的长度为1, 再选定图中的两个节点, 返回这两个节点之间最短的路径的长度. 样例: 输入: graph = {1,2,4# 阅读全文
posted @ 2021-12-16 13:09 言思宁 阅读(72) 评论(0) 推荐(0) 编辑
摘要:填充每个节点的下一个右侧节点指针 题目:填充每个节点的下一个右侧节点指针 给定一个 完全二叉树,二叉树定义如下: struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。 阅读全文
posted @ 2021-12-15 13:11 言思宁 阅读(23) 评论(0) 推荐(0) 编辑
摘要:二叉树的层序遍历II 题目:二叉树的层序遍历 II 给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 输入:[3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 输出: [ [15,7], [9,20], 阅读全文
posted @ 2021-12-14 11:43 言思宁 阅读(17) 评论(0) 推荐(0) 编辑
摘要:二分法及进阶 1.二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 注意栈溢出问题: 如果low和high都等于231-1,则int型的mid=(low+high)/2 阅读全文
posted @ 2021-12-12 17:11 言思宁 阅读(141) 评论(0) 推荐(0) 编辑
摘要:宽度优先搜索 题目:二叉树的层序遍历 给定一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 输入:[3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 输出:[[3],[9,20],[15,7]] 思路:利用BFS遍历二叉树, 阅读全文
posted @ 2021-12-12 16:52 言思宁 阅读(150) 评论(0) 推荐(0) 编辑
摘要:题目:验证二叉搜索树 判断二叉树是否一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 实例: 输入:root = [5,1,4,null,null,3,6] 输出:fal 阅读全文
posted @ 2021-12-10 09:24 言思宁 阅读(79) 评论(0) 推荐(0) 编辑
摘要:题目:二叉搜索树中的插入操作 将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。新值和原始二叉搜索树中的任意节点值都不同。 输入:root = [4,2,7,1,3], val = 5 输出:[4,2,7,1,3,5] 题解: 二叉搜索树(Binary Search Tree,简称 BST):⼀个 阅读全文
posted @ 2021-12-09 21:06 言思宁 阅读(78) 评论(0) 推荐(0) 编辑
摘要:题目:给你一个字符串 s,找到 s 中最长的回文子串。 输入:s = "babad"输出:"bab" 原题链接:https://leetcode-cn.com/problems/longest-palindromic-substring/ 思路: 1. 动态规划 class Solution { p 阅读全文
posted @ 2021-12-08 11:30 言思宁 阅读(26) 评论(0) 推荐(0) 编辑