![](https://img-blog.csdnimg.cn/20210804143823562.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode
文章平均质量分 72
手撕LeetCode,小菜鸟在一步步变得强大呀
CodeWinter
19级,CS专业,一直在努力的路上
展开
-
【OJ】两个数组的交集(set、哈希映射 ...)
题目难度:简单OJ链接:349. 两个数组的交集 - 力扣(LeetCode) (leetcode-cn.com)题目描述:给定两个数组 nums1 和 nums2 ,返回它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以不考虑输出结果的顺序 。示例 1:示例 2:...原创 2022-06-28 11:36:20 · 212 阅读 · 0 评论 -
【OJ - map】单词识别
题目难度:中等OJ链接:单词识别_牛客题霸_牛客网 (nowcoder.com)题目描述:输入一个英文句子,把句子中的单词(不区分大小写)按出现次数按从多到少把单词和次数在屏幕上输出来,次数一样的按照单词小写的字典序排序输出,要求能识别英文单词和句号。输入描述:输入为一行,由 若干个单词 和 句号 组成。输出描述:输出格式参见样例。示例:解题思路:...原创 2022-06-18 09:54:02 · 211 阅读 · 0 评论 -
【OJ - map】前K个高频单词
OJ链接:692. 前K个高频单词 - 力扣(LeetCode) (leetcode-cn.com)题目描述:给定一个单词列表 和一个整数 ,返回前 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序 排序。示例:思路如图1、2、3:下面代码是不完整的,解决上述问题的部门还没有写:...原创 2022-06-17 21:41:39 · 373 阅读 · 0 评论 -
【OJ - 堆】找数组中的第K个最大元素(C++ STL - priority_queue)
题目难度:中等LeetCode链接:215. 数组中的第K个最大元素题目描述:使用头文件 中的 sort 函数模板,直接排序,找到第k个最大的元素时间复杂度:因为 sort 底层是快速排序,所以时间复杂度为 O(N∗logN)O(N*logN)O(N∗logN)空间复杂度:O(1)O(1)O(1)思路2:建大堆使用堆排序,建立 n 个元素的大堆,做 k - 1 次删除操作后,此时堆顶元素就是第k个最大的元素因为 C++ 的优先级队列 priority_queue 本质就是堆,所以这道题我没有原创 2022-05-31 21:31:08 · 786 阅读 · 1 评论 -
【OJ - stack】中缀表达式转后缀表达式 & 后缀(逆波兰)表达式的计算
OJ - 中缀表达式转后缀表达式题目难度:简单OJ链接:中缀表达式转后缀表达式_牛客网 (nowcoder.com)将中缀表达式转为后缀表达式(逆波兰表达式),输入 a+b*c/d-a+f/b 输出 abc*d/+a-fb/+要求:语言不限;输入输出均为单个字符串;操作数用单个小写字母表示,操作符只需支持 ±*/,按照四则运算顺序确定优先级,不包含括号。示例:输入:a+b*c/d-a+f/b输出:abc*d/+a-fb/+ // 操作符跟在它要运算的操作数的后面,按优先级排列解题思路原创 2022-05-30 12:00:03 · 692 阅读 · 0 评论 -
【OJ - stack】栈的压入、弹出序列
OJ - 栈的压入、弹出序列题目难度:中等OJ链接:栈的压入、弹出序列__牛客网 (nowcoder.com)输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1 是该压栈序列对应的一个弹出序列,但 4,3,5,1,2 就不可能是该压栈序列的弹出序列。0 <= pushV.length == popV.length <= 1000-1000原创 2022-05-28 17:28:08 · 161 阅读 · 0 评论 -
【OJ - stack】最小栈
文章目录OJ - 最小栈解题思路OJ - 最小栈题目难度:简单OJ链接:155. 最小栈 - 力扣(LeetCode)设计一个支持 push ,pop ,top 操作,并能在 常数时间 内检索到最小元素的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int getMin() 获取堆栈中的最小元素。-- 时原创 2022-05-26 20:17:14 · 165 阅读 · 0 评论 -
【OJ - 基础数学】日期类题目合集(日期差值、打印日期、日期累加)
文章目录OJ - 日期差值解题思路OJ - 打印日期解题思路OJ - 日期累加解题思路OJ - 日期差值题目难度:中等OJ链接:日期差值_牛客网 (nowcoder.com)题目描述:有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。输入描述:有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD输出描述:每组数据输出一行,即日期差值示例:输入:2011041220110422输出:11解题思路让小的日期(y1、m1、d1)不原创 2022-05-02 09:59:38 · 763 阅读 · 13 评论 -
【OJ - 基础数学】求1+2+3+...+n(不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句)
文章目录OJ - 求1+2+3+...+n解题思路OJ - 求1+2+3+…+n题目难度:中等OJ链接:求1+2+3+…+n__牛客网 (nowcoder.com)题目描述:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。数据范围: 0 < n ≤ 200进阶: 空间复杂度 O(1),时间复杂度 O(n)示例1:输入:5返回值:15示例2:输入:1返回值:1解题思路不能原创 2022-05-02 09:20:44 · 1076 阅读 · 10 评论 -
【OJ - 二叉树】平衡二叉树
文章目录一、题目描述二、解题思路方法一:自顶向下的递归(暴力解法)方法二:自底向上的递归(最优解法)题目难度:简单LeetCode链接:110. 平衡二叉树 - 力扣(LeetCode) (leetcode-cn.com)一、题目描述给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树 每个节点 的左右两个子树的高度差的绝对值不超过 1 。 二、解题思路一棵二叉树是平衡二叉树,当且仅当其所有子树也都是平衡二叉树,因此我们使用递归的方式依次判断其所有原创 2022-03-09 16:12:36 · 372 阅读 · 18 评论 -
【OJ - 二叉树】翻转二叉树
文章目录一、题目描述二、解题思路题目难度:简单LeetCode链接:226. 翻转二叉树 - 力扣(LeetCode)一、题目描述给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 二、解题思路核心思路:翻转二叉树其实就是交换「当前树」左右指针指向如何翻转:递归点:交换「当前树」左右指针的指向,左指针 left 指向右子树,右指针 right 指向左子树不断往下递归,遍历完 root 的所有子树/** * Definition for a b原创 2022-03-08 11:34:22 · 594 阅读 · 4 评论 -
【OJ - 二叉树】二叉树的构建(用一个先序遍历的字符串)及遍历
文章目录一、题目描述二、解题思路题目难度:较难牛客网链接:二叉树遍历_一、题目描述编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。输入描述:输入包括1行字符串,长度不超过100。输出描述:可能有多组测试数据,对于每组数据, 输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空原创 2022-03-07 11:11:20 · 678 阅读 · 19 评论 -
【OJ - 二叉树】另一棵树的子树
文章目录一、题目描述二、解题思路题目难度:简单LeetCode链接:572. 另一棵树的子树 - 力扣(LeetCode) 一、题目描述给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。 二、解题思路如果一个树是另一个树的子树,则要么这两个树原创 2022-03-06 15:28:22 · 793 阅读 · 0 评论 -
【OJ - 二叉树】对称二叉树
文章目录一、题目描述二、解题思路题目难度:简单一、题目描述LeetCode链接:101. 对称二叉树 - 力扣(LeetCode)给你一个二叉树的根节点 root , 检查它是否轴对称。 二、解题思路核心思路:怎么判断一棵树是不是对称二叉树? 答案:如果所给根节点,为空,说明是对称的。如果根节点不为空,当它的左子树与右子树对称时,说明是对称的。怎么判断左树与右树是否对称呢?答案:如果左树的左孩子等于右树的右孩子、左树的右孩子等于右树的左孩子,那么这个左树和右树就对称。先比较左树和原创 2022-03-05 11:20:56 · 417 阅读 · 6 评论 -
【OJ - 二叉树】检查两棵树是否相同
文章目录一、题目描述二、解题思路题目难度:简单一、题目描述给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 LeetCode链接:100. 相同的树 - 力扣(LeetCode) 二、解题思路核心思路:先比较两颗二叉树的根节点如果「都为空」,则返回 true,说明两树相同。如果「一个为空一个不为空」,说明这两颗树不相同,则返回 false。如果「都不为空,但节点值不相同」,说明这两颗树原创 2022-03-04 12:55:02 · 639 阅读 · 2 评论 -
【OJ - 二叉树】二叉树的前、中、后序遍历
文章目录一、二叉树的前序遍历1.1 题目描述1.2 解题思路二、二叉树的中序遍历2.1 题目描述2.2 解题思路三、二叉树的后序遍历3.1 题目描述3.2 解题思路这三道OJ题解题思路类似,你只要会其中一道,其它两道也就会了一、二叉树的前序遍历题目难度:简单1.1 题目描述给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 LeetCode链接:144. 二叉树的前序遍历 - 力扣(LeetCode)1.2 解题思路递归遍历/** * Definition for a原创 2022-03-03 14:43:18 · 833 阅读 · 8 评论 -
【OJ - 二叉树】单值二叉树
判断是否是单值二叉树原创 2022-03-02 09:08:53 · 320 阅读 · 10 评论 -
【LeetCode】用栈实现队列(C语言) | 动图演示,超详细哦~
文章目录(1)题目描述(2)解题思路题目难度:《简单》(1)题目描述请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你只能使用标准的栈操作 —— 也就是只有原创 2021-09-17 14:20:31 · 367 阅读 · 8 评论 -
【LeetCode】用队列实现栈(C语言)| 动图演示,超详细哦~
文章目录(1)题目描述(2)解题思路题目难度:《简单》(1)题目描述请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。注意:你只能使用队列的基本操作 —— 也就是原创 2021-09-15 15:22:55 · 5357 阅读 · 22 评论 -
【LeetCode】括号匹配问题(C语言)| 动图演示,超详细哦~
文章目录(1)题目描述(2)解题思路(1)题目描述给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:1、左括号必须用相同类型的右括号闭合。2、左括号必须以正确的顺序闭合。示例1:输入:s = “( )”输出:true示例2:输入:s = “( ) [ ] { }”输出:true示例3:输入:s = “( ]”输出:false示例4:输入:s = “( [ ) ]”输出:false示例5原创 2021-09-11 23:09:55 · 2850 阅读 · 11 评论 -
【LeetCode】反转链表(C语言)| 动图演示,超详细哦~
文章目录(1)题目描述(2)解题思路1)解法1:调整节点指针的方向2)解法2:头插法题目难度:《简单》(1)题目描述给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例1: 输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例2: 输入:head = [1,2]输出:[2,1]示例3:输入:head = [ ]输出:[ ]LeetCode链接:206. 反转链表(2)解题思路1)解法1:调整节点指针的方向原创 2021-09-01 23:58:55 · 1005 阅读 · 8 评论 -
【LeetCode】移除链表元素(C语言)| 图解算法,超详细哦~
文章目录(1)题目描述(2)解题思路1)思路1:找到等于 val 的节点直接删除2)思路2:将不等于 val 的节点尾插到一个新链表中《题目难度:简单》(1)题目描述给你一个链表的头节点 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原创 2021-08-30 21:47:00 · 893 阅读 · 17 评论 -
【LeetCode】一个整型数组里除两个数字之外,其他数字都出现了两次,请找出这两个只出现一次的数字(数组、分组异或)
文章目录(1)题目描述(2)解题思路:分组异或题目难度:中等(1)题目描述一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例1:输入:nums = [4, 1, 4, 6]输出:[1, 6] 或 [6, 1]示例2:输入:nums = [1, 2, 3, 4, 5, 6, 1, 2, 3, 4]输出:[5, 6] 或 [6, 5]LeetCode链接:剑指 Offer 56原创 2021-08-21 12:49:48 · 2364 阅读 · 25 评论 -
【LeetCode】合并两个有序数组(88. 题)| 数组、逆向双指针归并 | 图解算法
文章目录(1)题目描述(2)解题思路1)思路1:合并后排序2)思路2:归并到新数组3)思路3:逆向双指针(1)题目描述 LeetCode链接:合并两个有序数组(2)解题思路1)思路1:合并后排序将数组 nums2 放到数组 nums1 的尾部,然后用 qsort 函数对整个数组进行排序。时间复杂度:O((m+n)log(m+n)),qsort 函数快速排序的时间复杂度为nlogn空间复杂度:O(1)2)思路2:归并到新数组开辟一个长度为 m+n 的新原创 2021-08-19 22:03:26 · 383 阅读 · 21 评论 -
【LeetCode】原地删除有序数组中的重复项(26. 题)| 数组、双指针(快慢指针)| 动图演示
文章目录1、题目描述:2、解题思路:1、题目描述:LeetCode链接:删除有序数组中的重复项2、解题思路:双指针(快慢指针),相同的数只保留一个,首次遇到的不同的数依次往前放。如果数组的长度为 0,则返回的新长度为 0如果数组的长度大于 0 时,数组中至少包含一个元素,在删除重复元素之后也至少剩下一个元素,因此 nums[0] 保持原状即可,从下标 1 处开始覆盖重复元素定义两个指针 fast 和 slow,分别为快指针和慢指针,快指针依次遍历数组,慢指针表示下一个原创 2021-08-03 22:29:54 · 181 阅读 · 6 评论 -
【LeetCode】原地移除数组中数值等于 val 的所有元素(27. 移除元素)| 数组、双指针(快慢指针) | 动图演示
文章目录1、题目描述:2、解题方法:1、题目描述:LeetCode链接:移除元素2、解题方法:双指针(快慢指针),将数组中要移除的元素用后面不等于 val 的元素依次覆盖掉。时间复杂度:O(N)空间复杂度:O(1)原数组: 移除元素动图演示如下: 代码如下:int removeElement(int* nums, int numsSize, int val){ int fast = 0; //指向不等于 val 的元素,用来覆盖要移除的元素原创 2021-08-03 22:28:39 · 387 阅读 · 8 评论 -
【LeetCode】原地将数组中的元素向右移动 k 个位置(189. 旋转数组)| 数组、三部翻转法
文章目录1、题目描述:2、解题方法:解法1:解法2:解法3:1、题目描述: LeetCode链接:https://leetcode-cn.com/problems/rotate-array/2、解题方法:解法1:右旋一次,将最后一个数值保存到 temp 中,数组中其余的数依次向右移动一位,再把 temp 放到最左边。然后重复 k 次上述操作。时间复杂度:O( N * (K%N) ) (右旋 k = N 次后,又回到原数组,所以取模。K%N = 0 时是最好情况 O(1),k =.原创 2021-07-29 23:51:51 · 626 阅读 · 0 评论 -
【LeetCode】数组nums包含从0到n的所有整数,但其中缺了一个,请找出那个缺失的整数(面试题 17.04. 消失的数字)| 数组
文章目录@[TOC]1、题目描述:2、解题方法:解法1:解法2:解法3:1、题目描述: LeetCode链接:https://leetcode-cn.com/problems/missing-number-lcci/2、解题方法:对于此道题,我们有哪些解题思路呢?先不管其事件复杂度是否符合题目的要求,我们先分析思路。解法1:先将数组中的数由小到大排序,再遍历排序后的结果,如果遍历下标和该下标对应的元素不相等,则返回该下标,如果遍历结束仍然没有符合条件,说明是最后一个数字 n 缺失了,则.原创 2021-07-29 11:53:00 · 1542 阅读 · 0 评论