上一页 1 2 3 4 5 6 ··· 16 下一页
摘要: 概述 图是一种较为复杂的非线性结构。 为啥说其较为复杂呢? 根据前面的内容,我们知道: 线性数据结构的元素满足唯一的线性关系,每个元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继。 树形数据结构的元素之间有着明显的层次关系。 但是,图形结构的元素之间的关系是任意的。 何为图呢? 简单来说, 阅读全文
posted @ 2026-01-09 09:00 程序员Seven 阅读(39) 评论(0) 推荐(0)
摘要: 题⽬描述 请实现两个函数,分别⽤来序列化和反序列化⼆叉树 ⼆叉树的序列化是指:把⼀棵⼆叉树按照某种遍历⽅式的结果以某种格式保存为字符串,从⽽使得内存中建⽴起来的⼆叉树可以持久保存。序列化可以基于先序、中序、后序、层序的⼆叉树遍历⽅式来进⾏修改,序列化的结果是⼀个字符串,序列化时通过 某种符号表示空节 阅读全文
posted @ 2026-01-08 09:00 程序员Seven 阅读(51) 评论(0) 推荐(0)
摘要: 题⽬描述 从上到下按层打印⼆叉树,同⼀层结点从左⾄右输出。每⼀层输出⼀⾏。 给定的⼆叉树是 {1,2,3,#,#,4,5} : 该⼆叉树多⾏打印层序遍历的结果是: [ [1], [2,3], [4,5] ] 示例1 输⼊:{8,6,10,5,7,9,11} 返回值:[[8],[6,10],[5,7, 阅读全文
posted @ 2026-01-07 09:00 程序员Seven 阅读(25) 评论(0) 推荐(0)
摘要: 题⽬描述 请实现⼀个函数按照之字形打印⼆叉树,即第⼀⾏按照从左到右的顺序打印,第⼆层按照从右⾄左的顺序打印,第三⾏按照从左到右的顺序打印,其他⾏以此类推。 示例1 输⼊:{8,6,10,5,7,9,11} 返回值:[[8],[10,6],[5,7,9,11]] 思路及解答 双向链表(推荐) 借助双向 阅读全文
posted @ 2026-01-06 09:00 程序员Seven 阅读(21) 评论(0) 推荐(0)
摘要: 什么是堆 堆是一种满足以下条件的树: 堆中的每一个节点值都大于等于(或小于等于)子树中所有节点的值。或者说,任意一个节点的值都大于等于(或小于等于)所有子节点的值。 大家可以把堆(最大堆)理解为一个公司,这个公司很公平,谁能力强谁就当老大,不存在弱的人当老大,老大手底下的人一定不会比他强。这样有助于 阅读全文
posted @ 2026-01-05 09:00 程序员Seven 阅读(33) 评论(0) 推荐(0)
摘要: 题⽬描述 请实现⼀个函数,⽤来判断⼀棵⼆叉树是不是对称的。注意,如果⼀个⼆叉树同此⼆叉树的镜像是同样 的,定义其为对称的。 例如:下⾯这棵⼆叉树是对称的 下⾯这个就不是对称的: 示例1 输⼊:{8,6,6,5,7,7,5} 返回值:true 示例2: 输⼊:{8,6,9,5,7,7,5} 返回值:f 阅读全文
posted @ 2026-01-04 09:00 程序员Seven 阅读(23) 评论(0) 推荐(0)
摘要: 题⽬描述 给定⼀个⼆叉树和其中的⼀个结点,请找出中序遍历顺序的下⼀个结点并且返回。注意,树中的结点不仅包含左右⼦结点,同时包含指向⽗结点的指针。 复杂的节点结构如下: public class TreeLinkNode { int val; TreeLinkNode left = null; Tre 阅读全文
posted @ 2025-12-31 09:00 程序员Seven 阅读(27) 评论(0) 推荐(0)
摘要: 题⽬描述 在⼀个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表 1->2->3->3->4->4->5 处理后为 1->2->5 示例1 输⼊:{1,2,3,3,4,4,5} 返回值:{1,2,5} 思路及解答 hash统计 第一次遍历统计频率 阅读全文
posted @ 2025-12-30 09:00 程序员Seven 阅读(39) 评论(0) 推荐(0)
摘要: 概述 其实回溯算法和我们常说的 DFS 算法非常类似,本质上就是一种暴力穷举算法。回溯算法和 DFS 算法的细微差别是:回溯算法是在遍历「树枝」,DFS 算法是在遍历「节点」 抽象地说,解决一个回溯问题,实际上就是遍历一棵决策树的过程,树的每个叶子节点存放着一个合法答案。你把整棵树遍历一遍,把叶子节 阅读全文
posted @ 2025-12-29 09:00 程序员Seven 阅读(35) 评论(0) 推荐(0)
摘要: 什么是动态规划 动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的, 例如:有N件物品和一个最多能背重量为W 的背 阅读全文
posted @ 2025-12-26 09:00 程序员Seven 阅读(637) 评论(1) 推荐(2)
摘要: 题⽬描述 给⼀个链表,若其中包含环,请找出该链表的环的⼊⼝结点,否则,输出null 。 例如,输⼊{1,2},{3,4,5} 时,对应的环形链表如下图所示: 可以看到环的⼊⼝结点的结点值为3,所以返回结点值为3的结点。 给定的链表节点的结构: public class ListNode { int 阅读全文
posted @ 2025-12-25 09:00 程序员Seven 阅读(20) 评论(0) 推荐(0)
摘要: 题⽬描述 请实现⼀个函数⽤来找出字符流中第⼀个只出现⼀次的字符。例如,当从字符流中只读出前两个字符" go "时,第⼀个只出现⼀次的字符是" g "。当从该字符流中读出前六个字符“ google "时,第⼀个只出现⼀次的字符是" l "。 返回值描述:如果当前字符流没有存在出现⼀次的字符,返回 # 阅读全文
posted @ 2025-12-24 09:00 程序员Seven 阅读(33) 评论(0) 推荐(0)
摘要: 题⽬描述 请实现⼀个函数⽤来判断字符串str是否表示数值(包括科学计数法的数字,⼩数和整数)。科学计数法的数字(按顺序)可以分成以下⼏个部分: 若⼲空格 ⼀个整数或者⼩数 (可选)⼀个 ' e ' 或 ' E ' ,后⾯跟着⼀个整数(可正可负) 若⼲空格 ⼩数(按顺序)可以分成以下⼏个部分: 若⼲空 阅读全文
posted @ 2025-12-23 09:00 程序员Seven 阅读(51) 评论(0) 推荐(0)
摘要: 建图函数 List<Integer>[] buildGraph(int numCourses, int[][] prerequisites) { // 图中共有 numCourses 个节点 List<Integer>[] graph = new LinkedList[numCourses]; fo 阅读全文
posted @ 2025-12-22 09:00 程序员Seven 阅读(677) 评论(2) 推荐(1)
摘要: 递归算法 递归算法(Recursion Algorithm)是一种重要的编程方法,核心思想是函数通过调用自身来解决问题。在递归中,一个复杂的问题被分解为相同类型但规模更小的子问题,直到达到一个简单到可以直接解决的基本情况(基准情况)。递归算法特别适合解决具有自相似结构的问题,时间复杂度跟递归深度和每 阅读全文
posted @ 2025-12-19 09:00 程序员Seven 阅读(753) 评论(0) 推荐(0)
摘要: 题⽬描述 请实现⼀个函数⽤来匹配包括' . '和' * '的正则表达式。模式中的字符' . '表示任意⼀个字符, ⽽' * '表示它前⾯的字符可以出现任意次(包含0 次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串" aaa "与模式" a.a "和" ab*ac*a "匹配,但 阅读全文
posted @ 2025-12-18 09:00 程序员Seven 阅读(41) 评论(0) 推荐(0)
摘要: 题⽬描述 给定⼀个数组A[0,1,...,n-1] ,请构建⼀个数组B[0,1,...,n-1] ,其中B 中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1] 。不能使⽤除法。(注意:规定B[0] =A[1] * A[2] * ... * A[n-1],B 阅读全文
posted @ 2025-12-17 09:00 程序员Seven 阅读(30) 评论(0) 推荐(0)
摘要: 题目描述 在⼀个⻓度为 n 的数组⾥的所有数字都在 0 到n-1 的范围内。 数组中某些数字是重复的,但不知 道有⼏个数字是重复的。也不知道每个数字重复⼏次。请找出数组中第⼀个重复的数字。 例如,如果输⼊⻓度为 7 的数组 [2,3,1,0,2,5,3] ,那么对应的输出是第⼀个重复的数字 2 。没 阅读全文
posted @ 2025-12-16 09:00 程序员Seven 阅读(47) 评论(0) 推荐(0)
摘要: Rabin-Karp算法 Rabin-Karp算法是一种基于哈希函数的字符串匹配算法,由 Michael O. Rabin 和 Richard M. Karp 于1987年提出,核心思想是用哈希函数将模式串和文本串中的子串转换为数值进行比较,避免大量不必要的字符比较。这个算法特别适合多模式串匹配场景 阅读全文
posted @ 2025-12-15 09:00 程序员Seven 阅读(876) 评论(0) 推荐(1)
摘要: 二分查找 二分查找(Binary Search)是一种高效的查找算法,也叫折半查找。核心思想:对于一个有序的数据集合,每次查找都将查找范围缩小为原来的一半,直到找到目标值或确定目标值不存在。二分查找要求数据必须是有序的,经常应用于数组等支持随机访问的数据结构里。跟线性查找相比,二分查找的效率要高得多 阅读全文
posted @ 2025-12-12 09:00 程序员Seven 阅读(736) 评论(0) 推荐(2)
上一页 1 2 3 4 5 6 ··· 16 下一页