03 2023 档案
摘要:876. 链表的中间结点 方法一: 最简单的做法,先求出整个链表的长度,再求1/2处节点的位置。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(
阅读全文
摘要:19. 删除链表的倒数第 N 个结点 自己纯手写第一题,递归有点冗杂,开辟了虚拟头节点,而且要特别注意边界条件(当倒数第n个正好是头节点时)。 ** * Definition for singly-linked list. * struct ListNode { * int val; * ListN
阅读全文
摘要:JZ7 重建二叉树 方法一:递归做法 前序的第一个结点就是根节点,而后在中序中将根节点的位置找出,根节点的左边是左子树,右边是右子树,而后再带入前序中分析,形成迭代。 /** * Definition for binary tree * struct TreeNode { * int val; *
阅读全文
摘要:c++解法 解法1:先确定头节点,而后移动指针 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr)
阅读全文
摘要:链表是存储数据的一种方式,由于内存不是连续的,因此访问只能从表头访问表尾。本题需要从尾部到头打印链表,只能借助特殊的数据结构输出,但是访问顺序不会因此改变。 首先,可以借助递归是到达底层后才会往上回溯的特性来遍历链表。 class Solution { public: void recursion(
阅读全文
摘要:状态压缩DP 当把所有横向格子放完后,纵向方格的排放方案只有一种。因此整个划分方案数与横着摆放方格的方案数相同。 f[i, j]表示,目前摆放第i列,j是二进制数(状态是整数,看成二进制数,位上的0或1代表不同的情况,这是状态压缩的核心),如果有n行,则j=1~2n-1,表示存储本行在第i-1列伸出
阅读全文
摘要:有单调性的题目一定可以二分,没有单调性的可能可以二分,二分和单调性没有直接关系。 整数二分的本质是边界,整个区间可以一份为二,一半满足一半不满足,则二分即可以找前一半的边界,也可以找后一半的边界。 一般地,整数二分有两个模板,根据所搜寻的边界点是在左边还是右边进行区分。 #include<iostr
阅读全文
摘要:状态表示:两个字符串,二维数组f[i][j] 集合:所有将a[1~i]变成b[1~j]的操作方式 属性:最小值 分类:三种,删,增,改。 时间复杂度:状态数:3,转移数:O(n2),一共,O(n2) 动态规划的状态转移和分类,通常从最后一步去考虑!! #include<iostream> #incl
阅读全文