- 博客(219)
- 资源 (5)
- 收藏
- 关注
原创 【Linux】进程等待wait/waitpid && status详解 && (非)阻塞等待(代码)
进程等待原因,进程等待方法,wait,waitpid,获取子进程status,(非)阻塞等待,进程的非阻塞等待方式代码,进程的阻塞等待方式代码
2022-08-09 17:41:08
3338
5
原创 【算法】JZ54 二叉搜索树的第k个节点
题目链接给定一棵结点数为n 二叉搜索树,请找出其中的第 k 小的TreeNode结点值。题解中序遍历结果是升序的。把问题转化成,在搜索二叉树中,中序找第k个结点。/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */// 法一:递
2022-05-01 20:42:39
808
1
原创 【算法】JZ77 按之字形顺序打印二叉树
题目链接给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)题解/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: ve
2022-05-01 19:53:53
419
原创 【算法】JZ73 翻转单词序列
题目链接此题先对每一个单词进行逆置,然后再整体逆置。类似此题。题解class Solution {public: void _reverse(string& str, int start, int end) { // [start, end) int i = start, j = end-1; while(i < j) { swap(str[i], str[j]);
2022-05-01 15:40:08
557
原创 【算法】JZ74 和为S的连续正数序列(场景转化为模型,滑动窗口)
题目链接描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列?返回值描述:输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序题解在[1,S]区间内,找和为S的连续正数序列。定义两个整型,分别
2022-04-30 22:26:37
140
原创 【算法】JZ55 二叉树的深度
题目链接输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度,根节点的深度视为 1 。题解1/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: i
2022-04-30 18:19:29
520
原创 【算法】JZ45 把数组排成最小的数(报错:reference to non-static member function must be called)
问题在牛客做题的时候出现了一个问题:reference to non-static member function must be called题目原题如下:题目链接描述输入一个非负整数数组numbers,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组[3,32,321],则打印出这三个数字能排成的最小数字为321323。1.输出结果可能非常大,所以你需要返回一个字符串而不是整数2.拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0数据范围:
2022-04-30 14:41:11
324
原创 【算法】JZ38 字符串的排列(全排列问题,DFS)
题目链接输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。回溯法1、添加当前数据2、剪枝(因为会存在重复的字符串)3、DFS4、回退一步class Solution {public: bool IsExist(vector<string>& ret, string str) {
2022-04-29 14:29:51
485
原创 【算法】JZ34 二叉树中和为某一值的路径(二)[回溯法]
题目链接回溯法定义结果集合待选结果集,分别存放最后结果和本次结果。分为以下四步:1、先把当前值添加进待选结果集2、判断当前结果是否满足条件3、深度优先遍历4、回退/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {publi
2022-04-27 14:11:21
900
原创 【算法】剑指offer - JZ33 二叉搜索树的后序遍历序列
题目链接输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回 true ,否则返回 false 。假设输入的数组的任意两个数字都互不相同。BST:二叉搜索树是指父亲节点大于左子树中的全部节点,但是小于右子树中的全部节点的树。后序遍历按照左子树,右子树,根的顺序进行遍历。分析BST的后序遍历序列的合法序列是,对于一个序列s,最后一个元素是x(root结点),去掉最后一个元素,剩下的元素序列可以分成两段,前一段(左子树)小于x,后一段(右子树)大于x,且这两段(子树)都是合
2022-04-10 14:28:28
1350
原创 【算法】剑指offer - JZ76 删除链表中重复的结点
题目链接在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。分析1、确定去重的范围,采用 前开后闭 的方法。2、增加一个头结点,统一操作。(prev, last]的三种情况1、last->nextnullptr,整张没有重复区间2、last->next nullptr (prev, last],确定有重复区间,prev->next = last->next(nullptr)3、last->next != nullpt
2022-04-09 20:48:47
447
原创 【算法】剑指offer - JZ27 二叉树的镜像
题目链接操作给定的二叉树,将其变换为源二叉树的镜像。源二叉树镜像二叉树类比前序遍历or后续遍历先镜像反转根结点的左右子树,然后分别反转左子树和右子树。/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */class Solut
2022-04-09 17:18:10
454
原创 【算法】剑指offer - JZ26 树的子结构
题目链接输入两棵二叉树A,B,判断B是不是A的子结构。(我们约定空树不是任意一个树的子结构)假如给定A为{8,8,7,9,2,#,#,#,#,4,7},B为{8,9,2},2个树的结构如下,可以看出B是A的子结构解题思路判断B是否是A树的子结构,先确定比较的起始位置(根结点的值相等),判断其左右子树是否也相等。如果返回false,在左右子树中继续递过查找。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode
2022-04-09 16:40:36
289
原创 【算法】剑指offer- JZ25 合并两个排序的链表
题目链接输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。法一:迭代每一次循环中,取较小数值的结点,尾插到新链表后。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* Merge(ListNode* pHead1, List
2022-04-09 15:53:33
1042
原创 【算法】剑指offer - JZ22 链表中倒数最后k个结点
题目链接输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。双指针法尤其要注意k值比结点个数多的情况!/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */class Solution {public: /**
2022-04-08 23:04:27
417
原创 【算法】剑指offer - JZ15 二进制中1的个数(x&(x-1))
题目链接输入一个整数 n ,输出该数32位二进制表示中1的个数。其中负数用补码表示。常规解法:位运算class Solution {public: int NumberOf1(int n) { int bit_1 = 1; int cnt = 0; for(int i = 0; i < 32; ++i) { if((n & bit_1) == 1)
2022-04-08 22:23:37
418
原创 【算法】剑指offer - JZ69 跳台阶(dp)
题目链接解题思路1、设f(n)表示跳上第n阶台阶的跳法数。2、则有状态转移方程,f(n) = f(n-1) + f(n-2)3、其中,f(0) = 1,f(1) = 1,f(2) = 2。C++解法一(数组)class Solution {public: int jumpFloor(int number) { // 动态规划 // f(n) = f(n-1) + f(n-2) // f(0) = 1, f(1) = 1, f(2) =
2022-04-08 20:45:53
334
原创 【算法】剑指offer - JZ10 斐波那契数列
题目链接迭代class Solution {public: int Fibonacci(int n) { int first = 1; int second = 1; int third = 1; while(n > 2) { first = second; second = third; third = first
2022-04-08 19:35:20
460
原创 【算法】剑指offer-JZ7 重建二叉树(递归)
题目链接给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。递归解法利用递归不断缩小问题的规模,通过下标进行控制。/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *ri
2022-04-08 13:55:26
240
原创 【算法】剑指offer - JZ39 数组中出现次数超过一半的数字
题目链接候选法(最佳解法)时间复杂度:O(N)空间复杂度:O(1)如果把数字当作人种,一个数字和另外数字打了起来,同归于尽,最后剩下的是不是人数最多的那种人。这里要满足一个条件:某类人的数目一定要大于总人数的一半。**算法步骤:**选择输入数组的第一个元素作为候选元素target,设置其出现次数为1,随后遍历数组,当遇到和target相同的元素,cnt+1;不同的元素,cnt-1.当cnt==0时,选择下一个元素作为候选元素,并且置cnt=1,遍历到数组的最后,剩下的target就是要求的结果。
2022-04-07 17:22:26
715
原创 【算法】剑指offer - JZ81 调整数组顺序使奇数位于偶数前面(二)
题目链接输入一个长度为 n 整数数组,数组里面可能含有相同的元素,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,对奇数和奇数,偶数和偶数之间的相对位置不做要求,但是时间复杂度和空间复杂度必须如下要求。双指针法左指针找偶数,右指针找奇数,找到后进行交换。class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * *
2022-04-06 22:20:08
171
原创 【算法】剑指offer - JZ21 调整数组顺序使奇数位于偶数前面(一)
题目链接输入一个长度为 n 整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路1从前往后遍历,偶数后移,腾出位置,放进奇数。class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型vector *
2022-04-06 22:07:05
448
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人