Algorithm
文章平均质量分 58
熠熠晨曦_
在读研究生|不断学习中……
展开
-
LeetCode 0538.把二叉搜索树转换为累加树
LeetCode 0538.把二叉搜索树转换为累加树原创 2023-01-08 16:48:27 · 55 阅读 · 0 评论 -
LeetCode 0108.将有序数组转换为二叉搜索树
LeetCode 0108.将有序数组转换为二叉搜索树原创 2023-01-08 16:48:41 · 65 阅读 · 0 评论 -
LeetCode 0669.修剪二叉搜索树【Go】
LeetCode 0669.修剪二叉搜索树原创 2023-01-08 16:47:23 · 57 阅读 · 0 评论 -
LeetCode 0450.删除二叉搜索树中的节点【Go】
LeetCode 0450.删除二叉搜索树中的节点原创 2023-01-04 12:38:42 · 105 阅读 · 0 评论 -
LeetCode 0701.二叉搜索树中的插入操作【Go】
LeetCode 0701.二叉搜索树中的插入操作原创 2023-01-04 12:37:45 · 68 阅读 · 0 评论 -
LeetCode 0235.二叉搜索树的最近公共祖先【Go】
LeetCode 0235.二叉搜索树的最近公共祖先原创 2023-01-04 12:14:36 · 84 阅读 · 0 评论 -
LeetCode 0236.二叉树的最近公共祖先【Go】
LeetCode 0236.二叉树的最近公共祖先原创 2023-01-04 12:13:41 · 185 阅读 · 0 评论 -
LeetCode 0501.二叉搜索树中的众数【Go】
LeetCode 0501.二叉搜索树中的众数原创 2023-01-04 12:13:40 · 93 阅读 · 0 评论 -
LeetCode 0530.二叉搜索树的最小绝对差【Go】
LeetCode 0530.二叉搜索树的最小绝对差原创 2023-01-04 12:12:14 · 70 阅读 · 0 评论 -
LeetCode 0098.验证二叉搜索树【Go】
LeetCode 0098.验证二叉搜索树原创 2023-01-04 12:01:58 · 96 阅读 · 0 评论 -
LeetCode 0700.二叉搜索树中的搜索【Go】
LeetCode 0700.二叉搜索树中的搜索原创 2023-01-04 12:02:08 · 76 阅读 · 0 评论 -
LeetCode 0617.合并二叉树【Go】
LeetCode 0617.合并二叉树原创 2023-01-04 11:54:45 · 62 阅读 · 0 评论 -
LeetCode 0654.最大二叉树【Go】
LeetCode 0654.最大二叉树原创 2023-01-04 11:53:34 · 78 阅读 · 0 评论 -
LeetCode 0106.从中序和后序遍历序列构造二叉树【Go】
LeetCode 0106.从中序和后序遍历序列构造二叉树原创 2023-01-03 21:40:52 · 102 阅读 · 0 评论 -
LeetCode 0112.路径之和【Go】
LeetCode 0112.路径之和原创 2023-01-03 21:39:35 · 41 阅读 · 0 评论 -
LeetCode 0513.找树左下角的值【Go】
LeetCode 0513.找树左下角的值原创 2023-01-03 21:39:03 · 50 阅读 · 0 评论 -
LeetCode 0404.左叶子之和【Go】
LeetCode 0404.左叶子之和原创 2023-01-03 21:39:08 · 72 阅读 · 0 评论 -
LeetCode 0257.二叉树的所有路径【Go】
LeetCode 0257.二叉树的所有路径原创 2023-01-03 21:38:21 · 62 阅读 · 0 评论 -
LeetCode 0110.平衡二叉树【Go】
LeetCode 0110.平衡二叉树原创 2023-01-03 21:37:26 · 61 阅读 · 0 评论 -
LeetCode 0111.二叉树的最小深度【Go】
二叉树的最小深度LeetCode111. 二叉树的最小深度题目描述给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。思路本题使用层序遍历的方式来解决,只有当左右孩子都为空的时候,才说明找到了最小深度。如果其中一个孩子为空则不是最小深度。代码Gotype TreeNode struct { Val int Left *TreeNode Right *TreeNode}func minDepth(r原创 2022-03-30 15:31:46 · 736 阅读 · 0 评论 -
LeetCode 0104.二叉树的最大深度【Go】
二叉树的最大深度LeetCode104. 二叉树的最大深度题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。思路使用迭代法的话,使用层序遍历是最为合适的,因为最大的深度就是二叉树的层数,和层序遍历的方式极其吻合。所以这道题的迭代法就是一原创 2022-03-28 23:13:05 · 90 阅读 · 0 评论 -
LeetCode 0101.对称二叉树【Go】
对称二叉树LeetCode101. 对称二叉树题目描述给你一个二叉树的根节点 root , 检查它是否轴对称。思路使用队列来比较两个树(根节点的左右子树)是否相互翻转,注意这不是层序遍历。代码Gofunc isSymmetric(root *TreeNode) bool { queue := make([]*TreeNode, 0) if root != nil { // 根节点非空,左右孩子节点入队 queue = append(queu原创 2022-03-27 23:36:52 · 618 阅读 · 0 评论 -
LeetCode 0226.翻转二叉树【Go】
翻转二叉树LeetCode226. 翻转二叉树题目描述给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。思路遍历的过程中去翻转每一个节点的左右孩子就可以达到整体翻转的效果。使用前序遍历和后序遍历都可以,唯独中序遍历不方便,因为中序遍历会把某些节点的左右孩子翻转两次。层序遍历依然可以。这里我使用前序遍历的方式翻转二叉树。代码Gotype TreeNode struct { Val int Left *TreeNode Right *TreeNode}f原创 2022-03-26 23:47:43 · 717 阅读 · 0 评论 -
LeetCode 0102.二叉树的层序遍历【Go】
二叉树的层序遍历LeetCode102. 二叉树的层序遍历题目描述给你二叉树的根节点 root,返回其节点值的层序遍历。(即逐层地,从左到右访问所有节点)思路题目要求给定一个二叉树的根节点,层次遍历该二叉树返回其节点值的层序遍历层序遍历一个二叉树。就是从左到右一层一层的去遍历二叉树。队列先进先出,符合一层一层遍历的逻辑代码Gotype TreeNode struct { Val int Left *TreeNode Right *TreeNode}func l原创 2022-03-25 19:59:51 · 758 阅读 · 0 评论 -
LeetCode 0144.二叉树的前序遍历【Go】
二叉树的前序遍历LeetCode144. 二叉树的前序遍历LeetCode094. 二叉树的中序遍历LeetCode145. 二叉树的后序遍历题目描述给你二叉树的根节点 root ,返回它节点值的 前中后序 遍历。思路二叉树主要有两种遍历方式:深度优先遍历:先往深走,遇到叶子节点再往回走前序遍历(递归法,迭代法):中左右中序遍历(递归法,迭代法):左中右后序遍历(递归法,迭代法):左右中广度优先遍历:一层一层的去遍历层次遍历(迭代法)在深度优先遍历中:有三个顺序,原创 2022-03-25 19:59:12 · 554 阅读 · 0 评论 -
LeetCode 0347.前k个高频元素【Go】
前k个高频元素题目描述给你一个整数数组nums和一个整数k,请你返回其中出现频率前k高的元素。你可以按任意顺序返回答案。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]思路题目要求给定一个数组和一个整数k返回数组中出现频率前k高的元素分两步统计频率对频率排序注意用map统计数字出现的频率用sort包函数对频率进行快排代码Gofunc topKF原创 2022-03-25 19:58:40 · 1165 阅读 · 0 评论 -
LeetCode 0150.逆波兰表达式求值【Go】
逆波兰表达式求值LeetCode150. 逆波兰表达式求值题目描述根据逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。注意:两个整数之间的除法只保留整数部分。可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入:tokens = ["2","1","+","3","*"]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例原创 2022-03-25 19:56:32 · 82 阅读 · 0 评论 -
LeetCode 1047.删除字符串中的所有相邻重复项【Go】
删除字符串中的所有相邻重复项LeetCode1047. 删除字符串中的所有相邻重复项题目描述给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:"abbaca"输出:"ca"解释:例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中原创 2022-03-25 19:55:39 · 269 阅读 · 0 评论 -
LeetCode 0020.有效的括号【Go】
有效的括号LeetCode20. 有效的括号题目描述给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例 2:输入:s = "()[]{}"输出:true示例 3:输入:s = "(]"输出:false示例 4:输入:s = "([)]"输出:false示例 5:输入:s = "{[]}"输出:原创 2022-03-25 19:54:27 · 445 阅读 · 0 评论 -
LeetCode 0225.用队列实现栈【Go】
用队列实现栈LeetCode225. 用队列实现栈题目描述请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。注意:你只能使用队列的基本操作 —— 也就是 push原创 2022-03-25 19:53:31 · 63 阅读 · 0 评论 -
LeetCode 0232.用栈实现队列【Go】
用栈实现队列LeetCode232. 用栈实现队列题目描述请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你只能使用标准的栈操作 —— 也就是只有push t原创 2022-03-20 20:23:42 · 114 阅读 · 0 评论 -
LeetCode 0142.环形链表II【Go】
环形链表IILeetCode142. 环形链表 II题目描述给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改链表。示例1:输入:head = [3原创 2022-03-20 20:20:51 · 313 阅读 · 0 评论 -
LeetCode 面试题02.07.链表相交【Go】
链表相交LeetCode面试题 02.07. 链表相交题目描述给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, ski原创 2022-03-20 20:20:10 · 243 阅读 · 0 评论 -
LeetCode 0019.删除链表的倒数第N个节点【Go】
删除链表的倒数第N个节点LeetCode19. 删除链表的倒数第 N 个结点题目描述示例1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]思路题目要求题目给定一个单链表,要求删除倒数第n个节点返回删除后的链表的头节点暴力解法:遍历一遍链表,获知链表的总长度L,第二遍遍历删除从开头数起第(L-n+1)个节点。时原创 2022-03-19 11:48:22 · 94 阅读 · 0 评论 -
LeetCode 0024.两两交换链表中的节点【Go】
两两交换链表中的节点LeetCode0024. 两两交换链表中的节点题目描述给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例3:输入:head = [1]输出:[1]思路题目要求给定一个链表,两两交换链表中的节点,不能仅交换值返回两两节点交换后的链表的头节点这道题原创 2022-03-19 11:47:39 · 120 阅读 · 0 评论 -
LeetCode 0206.反转链表【Go】
反转链表LeetCode206. 反转链表题目描述给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]思路题目要求给定一个链表,反转该链表返回反转后的链表因为是单链表,所以要标记当前节点的前节点可以使用双指针法,一个标记前节点,一个标记当前节点;翻转完成后两个指针都往原创 2022-03-19 11:43:35 · 347 阅读 · 0 评论 -
LeetCode 0707.设计链表【Go】
设计链表LeetCode0707. 设计链表题目描述设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中 index 号节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添原创 2022-03-19 11:41:06 · 350 阅读 · 0 评论 -
LeetCode 0203.移除链表元素【Go】
移除链表元素LeetCode203. 移除链表元素题目描述给你一个链表的头节点head和一个整数 val,请你删除链表中所有满足 Node.val == val 的节点,并返回新的头节点 。示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[]思路题目要求给定一个链表的头节点和一个原创 2022-03-19 11:39:45 · 151 阅读 · 0 评论 -
LeetCode 0059.螺旋矩阵II【Go】
螺旋矩阵IILeetCode59. 螺旋矩阵 II题目描述给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。示例1:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]示例2:输入:n = 1输出:[[1]]思路题目要求输入一个正整数n,要求生成一个二维矩阵,元素按顺时针螺旋顺序排列。返回生成的二维矩阵模拟顺时针画矩阵的过程:填充上行从左到右填充右列从上到下填充下原创 2022-03-19 11:38:20 · 242 阅读 · 0 评论 -
LeetCode 0209.长度最小的子数组【Go】
长度最小的子数组LeetCode209. 长度最小的子数组题目描述给定一个含有n个正整数的数组和一个正整数target。找出该数组中满足其和≥ target的长度最小的连续子数组[numsl, numsl+1, ..., numsr-1, numsr],并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。示例 2:输入:target = 4,原创 2022-03-18 13:09:44 · 638 阅读 · 0 评论