
Practice makes perfect.
文章平均质量分 61
总结规律
凛音Rinne
备考暂停更新,会更新考研相关
展开
-
【LeetCode.栈.150】逆波兰表达式求值/后缀表达式 + 前缀表达式
一、中缀表达式 在后缀表达式(可以通过中缀表达式转换过来)之前,先了解中缀表达式 二、逆波兰表达式(后缀表达式) 将中缀表达式中的数组变成栈,再准备一个栈 class Solution { public: int evalRPN(vector<string>& tokens) { stack<int> st; for(const auto& e : tokens) { if(原创 2022-04-06 11:02:09 · 392 阅读 · 1 评论 -
【牛客】JZ31 栈的压入、弹出序列
题目:栈的压入、弹出序列_牛客题霸_牛客网 (nowcoder.com) 思路放简单一点,遍历,push与pop字符不相符,就一直push(因为还没到pop的时候)直到pop与push对应的数字相同,表示这个数进栈之后又立马出栈了(存在这种情况,而且必须立马pop,因为如果后面的数再进来,这个数就不能先pop了)之后开始判断栈顶的元素和pop相等不相等,相等,pop(理由和之前一样,一定要在后一个元素进来之前先pop) push走完了之后,只剩pop了,这时pop是一定能在这次循环走完才算是true,.原创 2022-04-05 16:03:13 · 393 阅读 · 1 评论 -
【LeetCode.位运算】只出现一次的数字 I II III
考点:位运算 链接: 260. 只出现一次的数字 III 137. 只出现一次的数字 II 136. 只出现一次的数字 class Solution { public: int singleNumber(vector<int>& nums) { int ret = 0; for(size_t i = 0; i < nums.size(); i++) { ret ^= nums[i]; .原创 2022-03-25 17:19:42 · 725 阅读 · 1 评论 -
【牛客】JZ39 数组中出现次数超过一半的数字
知识点:哈希、数组 链接:JZ39 数组中出现次数超过一半的数字 先排序,排序完成之后,出现次数过一半的数字一定出现在中间那个 class Solution { public: int MoreThanHalfNum_Solution(vector<int> numbers) { sort(numbers.begin(), numbers.end()); return numbers[numbers.size()/2]; } .原创 2022-03-25 17:10:18 · 689 阅读 · 1 评论 -
【牛客】JZ42 连续子数组的最大和
知识点:动态规划、贪心 链接:JZ42 连续子数组的最大和 class Solution { public: int FindGreatestSumOfSubArray(vector<int> array) { if(array.size() == 1) { return array[0]; } int ret = array[0]; int max = arra.原创 2022-03-25 16:58:49 · 566 阅读 · 1 评论 -
【LeetCode.数组.17】电话号码的字母组合
题目:电话号码的字母组合 链接:17. 电话号码的字母组合 - 力扣(LeetCode) (leetcode-cn.com) class Solution { string arr[10] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; public: /* j i 2 a b c 3 d e f 4 g h i .原创 2022-03-19 17:22:40 · 168 阅读 · 1 评论 -
【LeetCode.数组.118】杨辉三角
来源:力扣(LeetCode) 链接:118. 杨辉三角 - 力扣(LeetCode) (leetcode-cn.com) 一、思路分析 一维数组实现 c语言 很麻烦! #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void yh(int n) { int i = 0; int j = 0; int sum = 0; int num = 1;//防止还完数字后,后面那个数字还需要用上面的数字 int a[20] = .原创 2022-03-19 15:13:09 · 1052 阅读 · 1 评论 -
【LeetCode.队列.622】设计循环队列
设计循环队列 文章目录设计循环队列一、题目二、思路分析1. 循环队列构成分析2. 循环队列定义3. 循环队列初始化4. 循环队列插入一个元素5. 循环队列中删除一个元素6. 队首获取元素7. 队尾获取元素8. 销毁循环链表 一、题目 题目指路:622. 设计循环队列 - 力扣(LeetCode) (leetcode-cn.com) 二、思路分析 1. 循环队列构成分析 循环队列的想象图: 循环队列的实际操作图:(这里数组和链表都可以) 这里当front和tail相等的时候是空队列 以 数原创 2021-11-04 10:00:33 · 186 阅读 · 21 评论 -
【LeetCode.栈.232】用栈实现队列
栈实现队列 文章目录栈实现队列一、题目二、题目分析1. 准备好栈2. 初始化队列3. 将元素 x 推到队列的末尾4. 返回队列开头的元素5. 从队列的开头移除并返回元素6. 判断队列是否为空7. 销毁队列三、代码汇总 一、题目 题目指路:232. 用栈实现队列 - 力扣(LeetCode) (leetcode-cn.com) 二、题目分析 首先把栈和队列都摆出来慢慢看 队列进入是1、2、3,出队列也应该是1、2、3 而栈进入是1、2、3,我们现在要控制出去也是1、2、3 将一个栈里的元素拿原创 2021-11-03 13:56:33 · 399 阅读 · 17 评论 -
【LeetCode.队列.225】用队列实现栈
队列实现栈 文章目录队列实现栈一、题目二、题目分析1. 准备队列2. 新建栈3. 元素x压入栈顶4. 移除并返回栈顶元素5. 返回栈顶元素6. 判断栈是否为空7. 销毁栈三、整体代码(c语言版本) 一、题目 ????题目指路:225. 用队列实现栈 - 力扣(LeetCode) (leetcode-cn.com) 二、题目分析 把两个队列拿出来分析 ????栈进入是1、2、3,出栈是3、2、1 ????队列进入是1、2、3,我们现在要控制出队列是按3、2、1的顺序 ????把1、2放到另一个原创 2021-11-02 14:11:33 · 1333 阅读 · 22 评论 -
【LeetCode.链表.138】复制复杂链表/复制带随机指针的链表,多图分析
复制复杂链表 文章目录复制复杂链表一、题目二、思路分析 一、题目 ❄️题目指路:138. 复制带随机指针的链表 - 力扣(LeetCode) (leetcode-cn.com) 以示例1为例展开分析 二、思路分析 如果只是简单的复制,那么很简单 但题目要求复制链表中的指针都不应指向原链表中的节点 这就要求我们需要malloc出和原链表相同的节点 而我们能做到的只是将新的节点链接起来,至于像原链表那样链接方式,却无法做到,因为新的链表不知道random是第几位 我们需要原链表的一个映射,去找到那原创 2021-10-27 14:26:11 · 254 阅读 · 14 评论 -
【LeetCode.链表.141+142】环形链表,附详细证明过程+多图分析
环形链表 文章目录环形链表问题一:判断链表是否有环问题一思路分析问题二:如果相遇了,在哪相遇的问题二思路分析 + 相遇点证明过程 问题一:判断链表是否有环 ????题目指路:141. 环形链表 - 力扣(LeetCode) (leetcode-cn.com) 问题一思路分析 ????首先题目已经给出了思路: ????如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环 ????????这就类似于追赶/追及的问题,我们经常用到的是 快慢指针???????? 我们将上面原创 2021-10-27 11:44:22 · 666 阅读 · 13 评论 -
【LeetCode.链表.160】相交链表,判断链表是否相交
相交链表 一、题目 ????????题目指路:160. 相交链表 - 力扣(LeetCode) (leetcode-cn.com) 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 二、思路分析 ????可以发现: ????先判断链表是否相交,链表如果相交,最后一个节点必然相同 ????????这里注意不仅仅是节点的值相同,更重要的是节点的地址相同???????? ????在判断是否相交的时候记录两个链表的原创 2021-10-27 09:08:16 · 199 阅读 · 4 评论 -
【NowCoder.链表.OR36】链表的回文结构,多个知识点,含如何找到链表中间节点,如何翻转链表
链表的回文结构 文章目录链表的回文结构一、题目二、思路分析 一、题目 ????题目指路:OR36 链表的回文结构_牛客题霸_ 牛客网 (nowcoder.com) ????描述 对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。 给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900 ????测试样例: 1->2->2->1 返回:true 二、思路分析 ????????我们需要找到中间的原创 2021-10-26 14:54:57 · 151 阅读 · 5 评论 -
【NowCoder.链表.CM11】链表分割,思路分析+图解
链表分割 文章目录链表分割一、题目二、思路分析 一、题目 ????题目指路:CM11 链表分割_牛客题霸_牛客网 (nowcoder.com) ????????现有一链表的头指针ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针 二、思路分析 ????错误思路: 遍历两遍链表,第一次找小的数,第二次找大的数,但存在隐患,因为链表是连在一起的,将前面节点放到新的链表中,链表中的结构会紊乱 ????普通思路:原创 2021-10-26 11:04:36 · 248 阅读 · 5 评论 -
【LeetCode·单链表.206】反转链表——1024热身题
反转链表 一、题目 ????来源:力扣(LeetCode) ????链接:206.反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 ☀️示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] ☀️示例 2: 输入:head = [1,2] 输出:[2,1] ☀️示例 3: 输入:head = [] 输出:[] ☀️提示: 链表中节点的数目范围是 [0, 5000] -5000 <= Node.val <= 5000原创 2021-10-24 10:41:41 · 1902 阅读 · 3 评论 -
【LeetCode·数组.26】删除数组中重复项
删除数组中重复项 一、题目 来源:力扣(LeetCode) 链接:26.删除数组中的重复项 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 说明: 为什么返回数值是整数,但输出的答案是数组呢? 请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。 你可以想象内部操作如下: // nums 是以“引用”方式原创 2021-10-20 19:42:08 · 187 阅读 · 0 评论 -
【LeetCode·数组.27】移除元素,分析+代码
移除元素 文章目录移除元素一、题目二、思路分析三、总结 一、题目 来源:力扣(LeetCode) 链接:27.移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 说明: 为什么返回数值是整数,但输出的答案是数组呢? 请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组原创 2021-10-20 19:15:23 · 117 阅读 · 2 评论 -
【LeetCode·数组.88】合并两个有序数组,题目分析+三种思路+知识点总结
合并两个有序数组 来源:力扣(LeetCode) 链接:88.合并两个有序数组 文章目录合并两个有序数组一、题目二、思路分析1. 合并后快排2. 空间换取时间,将数字按照顺序放入新数组3. 双指针三、总结 一、题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组不应由函数返回,而是存储在数组原创 2021-10-19 16:00:22 · 735 阅读 · 12 评论 -
【LeetCode·数组.189】旋转数组,题目分析+三种思路+知识点总结
旋转数组 文章目录旋转数组一、题目二、解题思路分析1. 暴力循环求解2. 额外数组,利用空间换时间3. 数组翻转三、总结 一、题目 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2,3,4] 示例 2: 输入:原创 2021-10-19 11:11:03 · 343 阅读 · 10 评论 -
【LeetCode·位运算.190】颠倒二进制位,一题感受分治算法妙用,题目分析+两种思路+知识点总结
颠倒二进制位 ????????开了一个专栏专门记录LeedCode题目,总结思路,分析题目,汇总知识点,熟能生巧!欢迎收藏! 文章目录颠倒二进制位一、题目二、题目分析1. 逐位颠倒2. 位运算分治三、总结 一、题目 来源:力扣(LeetCode) 链接:190.颠倒二进制位 颠倒给定的 32 位无符号整数的二进制位。 提示: 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的原创 2021-10-16 11:52:46 · 636 阅读 · 18 评论 -
【LeetCode·位运算.67】二进制求和,详解分析+两种思路+知识点总结
二进制求和 ????????开了一个专栏专门记录LeedCode题目,总结思路,分析题目,汇总知识点,熟能生巧!欢迎收藏! 一、题目 给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 和 0。 示例 1: 输入: a = "11", b = "1" 输出: "100" 示例 2: 输入: a = "1010", b = "1011" 输出: "10101" 提示: 每个字符串仅由字符 ‘0’ 或 ‘1’ 组成 1 <= a.length,原创 2021-10-15 00:01:16 · 1176 阅读 · 30 评论