Day79 | 灵神 | 反转链表 两数相加 两数相加II
Day79 | 灵神 | 反转链表 两数相加 两数相加II2.两数相加2. 两数相加 - 力扣(LeetCode) 思路: 笔者一开始想的是在原数组上面进行改动,但是那个不知道两个链表长度就很麻烦,一个链表结束后还得遍历另外一个链表,并且最后返回结果也只能返回长的链表,这真的很麻烦 所以要新创建一个链表,用新创建的链表节点记录val的值 确定循环终止条件:只要l1 l2 或者进位有一个不为0 那就是要继续循环,继续创建新的节点 也不需要新的变量,用进位carry来记录值即可 最后carry除以10,大于10就是1表示有进位,小于10就是0,也就是没进位 完整代码: 1234567891011121314151617181920212223242526272829303132class Solution {public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { //建立虚拟头结点 ListNode res; ListNode...
26考研 | 王道 | 数据结构 | 第三章 栈和队列
第三章 栈和队列栈和队列有相同的逻辑结构,即都是线性结构 3.1. 栈注:卡特兰数要记住 本小节完整代码栈的顺序存储123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293#include<iostream>using namespace std;const int MAXSIZE = 10;/*1. * *InitStack(&S):初始化栈。构造一个空栈 S,分配内存空间。 * *2. * *DestroyStack(&S):销毁栈。销毁并释放栈 S 所占用的内存空间。 * *3. * *Push(&S, x):进栈。若栈 S 未满,则将 x 加入使其成为新的栈顶元素。 * *4. * *Pop(&S, &x):出栈。若栈 S...
Day78 | 灵神 | 反转链表 两两交换链表中的节点
Day78 | 灵神 | 反转链表 两两交换链表中的节点24.两两交换链表中的节点24. 两两交换链表中的节点 - 力扣(LeetCode) 思路: 这道题就是下面这道题的k==2的情况 25. K 个一组翻转链表 - 力扣(LeetCode) 基本思路和92. 反转链表 II - 力扣(LeetCode)一样 用第一个例子[1,2,3,4,5]作为说明,就是说,步骤为 1.建立虚拟头结点t,作为要反转部分[1,2]的前一个节点,以后每反转一部分都要更新和保存反转部分的前一个节点 2.再次建立一个临时节点q保存要反转部分的后一个结点[3] 3.建立两个指针指向要交换的两个节点,cur指向2,pre指向1 4.反转指针把2指向1 5.把反转部分接到原来链表上 5.1 [1]的next即pre的next指向[3],即q,这是把后面接好了 5.2 ...
Day77 | 灵神 | 反转链表 反转链表 反转链表II K个一组翻转链表
Day77 | 灵神 | 反转链表 反转链表 反转链表II K个一组翻转链表206.反转链表206. 反转链表 - 力扣(LeetCode) 思路: 笔者之前做过所以做的很快,简单来说用p指向现在的结点,pre指向p的前一个节点,用指向p的下一个节点 然后就是让p->next指向前一个节点pre,这是反转 再让前一个结点变成p,p变成q,这是往后继续遍历 也可以看灵神的视频讲解,有图示很快理解 反转链表【基础算法精讲 06】_哔哩哔哩_bilibili 完整代码: 123456789101112131415class Solution {public: ListNode* reverseList(ListNode* head) { ListNode *p=head; ListNode *pre=nullptr; while(p!=nullptr) { ListNode* q=p->next; p->next=pre; ...
Hexo执行hexo d报错 Connection closed by 127.0.0.1 port 22如何解决
Hexo执行hexo d报错 Connection closed by 127.0.0.1 port 22出现了如下报错 1234567891011Connection closed by 127.0.0.1 port 22fatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.FATAL Something's wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.htmlError: Spawn failed at ChildProcess.<anonymous> (E:\myblog\node_modules\hexo-deployer-git\node_modules\hexo-util\lib\spawn.js:51:21) at...
Day76 | 灵神 | 二分查找 寻找旋转排序数组中的最小值II 寻找峰值II 需复习
Day76 | 灵神 | 二分查找 寻找旋转排序数组中的最小值II 寻找峰值II154.寻找旋转排序数组中的最小值II154. 寻找旋转排序数组中的最小值 II - 力扣(LeetCode) 思路: 直接去看灵神的题解吧,笔者往后复习这道题的时候再回来看吧 154. 寻找旋转排序数组中的最小值 II - 力扣(LeetCode) 完整代码: 1234567891011121314151617class Solution {public: int findMin(vector<int>& nums) { int l=0,r=nums.size()-1; while(l<r) { int mid=l+(r-l)/2; if(nums[mid]==nums[r]) r--; else if(nums[mid]<nums[r]) r=mid; ...
Day75 | 灵神 | 二分查找 寻找旋转排序数组中的最小值 搜索旋转排序数组
Day75 | 灵神 | 二分查找 寻找旋转排序数组中的最小值 搜索旋转排序数组153.寻找旋转排序数组中的最小值153. 寻找旋转排序数组中的最小值 - 力扣(LeetCode) 思路: 思路就是如何判断nums[mid]是在最小值的左侧还是右侧 这道题第一次做还是没啥思路,看到灵神说和最后一个数a进行比较就懂了 不管旋转没有旋转,只要nums[mid]<=a,那说明最小值肯定在[l,mid]之中 只要nums[mid]>a,那说明最小值肯定在[mid,r)之中 具体看灵神怎么说: 我们需要判断 x 和数组最小值的位置关系,谁在左边,谁在右边? 把 x 与最后一个数 nums[n−1] 比大小: 如果 x>nums[n−1],那么可以推出以下结论:1.nums 一定被分成左右两个递增段;2.第一段的所有元素均大于第二段的所有元素;3.x 在第一段。4.最小值在第二段。所以 x 一定在最小值的左边。如果 x≤nums[n−1],那么 x 一定在第二段。(或者 nums 就是递增数组,此时只有一段。)x 要么是最小值,要么在最小值右边。所以,只需要比较...
Day74 | 灵神 | 二分查找 寻找峰值
Day74 | 灵神 | 二分查找 寻找峰值162.寻找峰值162. 寻找峰值 - 力扣(LeetCode) 思路: 这道题笔者完全没有思路,不知道怎么用二分,实在有点想不通,诶,多刷吧,下面说说笔者的理解 大家可以先看一下这个视频 数组峰值 搜索旋转排序数组【基础算法精讲 05】_哔哩哔哩_bilibili 第一个难点有点云里雾里是吧,再去看看灵神的题解,主要去看为什么 如果 i<*n*−1 且 *nums*[*i*]>nums[i+1],那么在 [0,i] 中一定存在至少一个峰值。 162. 寻找峰值 - 力扣(LeetCode) 灵神使用反证法说明了 如果 i<*n*−1 且 *nums*[*i*]>nums[i+1],那么在 [0,i]...
26考研 | 王道 | 数据结构 | 第二章 线性表
第二章 线性表2.1 线性表的定义和基本操作 2.1.1 线性表的定义 线性表是具有相同数据类型的n(n>0)个数据元素的有限序列。(其中n为表长,当n=0时线性表是一个空表。若用L命名线性表,则其一般表示为) 特点: 1.存在惟一的第一个元素2.存在惟一的最后一个元素3.除第一个元素之外,每个元素均只有一个直接前驱4.除最后一个元素之外,每个元素均只有一个直接后继 几个概念: 1.ai是线性表中的“第i个”元素线性表中的位序。2.a1是表头元素;an是表尾元素。3.除第一个元素外,每个元素有且仅有一个直接前驱:除最后一个元素外,每个元素有且仅有一个直接后继。 存储结构: 1.顺序存储结构:顺序表 2.链式存储结构:链表 2.1.2 线性表的基础操作 InitList(&L):初始化表。构造一个空的线性表L,分配内存空间。 DestroyList(&L): 销毁操作。销毁线性表,并释放线性表L所占用的内存空间。 ListInsert(&L;i,e):插入操作。在表L中的第i个位置上插入指定元素e。...
二分查找 二分答案 套路模板
二分查找(二分答案)套路模板二分查找 红蓝染色法【基础算法精讲 04】_哔哩哔哩_bilibili 提要二分答案是一种高效的算法策略,适用于解决最值问题和单调性验证问题。它的核心思路是将问题转化为对答案的判定过程,通过二分法快速缩小搜索范围 笔者写的都是以左闭右开区间为主的 下面笔者会按照一道题的做题顺序来分析步骤,建议你最好先做一下或者起码要把题读了再往下读 875. 爱吃香蕉的珂珂 - 力扣(LeetCode) Day69 | 灵神 | 二分查找:爱吃香蕉的珂珂-CSDN博客 题解 1234567891011121314151617181920212223242526272829class Solution {public: bool check(vector<int>& piles,int k,int h) { long long sum=0; for(auto c:piles)、 { if(c%k==0) ...