avatar
文章
40
标签
0
分类
4

首页
时间轴
标签
分类
jhhuangのblog
首页
时间轴
标签
分类

jhhuangのblog

代码随想录算法训练营day24(day27补) | 77.组合
发表于2023-08-07|刷题笔记
回溯算法理论基础 回溯算法就是递归 回溯算法是暴力搜索算法 适用问题: 组合(不强调元素的顺序) 切割 子集 排列问题(排列强调元素的顺序) 棋盘问题(N皇后,解数独) 回溯法都可以抽象为一个树形结构 树的宽度=集合的大小 回溯法模板: void backtracking(参数) { if (终止条件) { 收集结果; return; } for (集合元素集) { 处理节点; 递归函数; 回溯; } return; } 刷题笔记day24 77.组合 文章讲解:代码随想录 是否自己做出来通过全部用例:否 遇到的困难/犯的错误 递归逻辑不是很清晰,有待理解。 自己写的代码 看了题解后写的代码: class Solution { public: vector<int> path; vector<vector<int>> result; ...
代码随想录算法训练营day23 | 669.修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树
发表于2023-08-03|刷题笔记
刷题笔记day23 669.修剪二叉搜索树目 文章讲解:代码随想录 是否自己做出来通过全部用例:否 遇到的困难/犯的错误 想用删除二叉搜索树的解法,每次删除一个节点,但是失败了。 自己写的代码 题解方法: class Solution { public: TreeNode* trimBST(TreeNode* root, int low, int high) { if (!root) return NULL; if (root->val > high) { return trimBST(root->left, low, high); } if (root->val < low) { return trimBST(root->right, low, high); } root->left = trimBST(root->left, ...
代码随想录算法训练营day22 | 235.二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点
发表于2023-08-02|刷题笔记
刷题笔记day22 235.二叉搜索树的最近公共祖先 文章讲解:代码随想录 是否自己做出来通过全部用例:否 遇到的困难/犯的错误 思考和普通二叉树的区别,利用二叉搜索树的特性,简化代码逻辑。 自己写的代码 看了题解写的代码: class Solution { public: TreeNode* getcomances(TreeNode* node, TreeNode* p, TreeNode* q) { if (!node) return node; if (node->val < p->val && node->val < q->val) { if (TreeNode* right = getcomances(node->right, p, q)) return right; } else if (node->val > p->val && node-> ...
代码随想录算法训练营day21 | 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236.二叉树的最近公共祖先
发表于2023-08-01|刷题笔记
刷题笔记day21 530.二叉搜索树的最小绝对差 文章讲解:代码随想录 是否自己做出来通过全部用例:是 遇到的困难/犯的错误 if (pre != NULL) { int dif = abs(pre->val - node->val); if (dif < mindif) { mindif = dif; } } pre = node; 这里的pre要放在if外面,我试图把它放在里面导致pre一直是NULL,永远进不去if条件。 自己写的代码 class Solution { public: TreeNode* pre = NULL; int mindif = INT_MAX; void getmindif(TreeNode* node) { if (!node) return; getmindif(node->left); if (pre != NULL) { ...
多线程
发表于2023-07-31|实习收获
线程 互斥锁 什么是互斥锁? 互斥锁用于保护共享资源,以确保在同一时间只有一个线程可以访问该资源,从而避免竞态条件。 函数原型 C 在C语言中,互斥锁的函数原型在头文件pthread.h中声明,常用的互斥锁函数有以下几个: pthread_mutex_init:初始化互斥锁。 pthread_mutex_lock:加锁互斥锁。如果互斥锁已经被其他线程锁定,则当前线程会阻塞,直到获取到锁为止。 pthread_mutex_unlock:解锁互斥锁。 pthread_mutex_destroy:销毁互斥锁。 以下是互斥锁的函数原型和简要用法: pthread_mutex_t:互斥锁类型。 int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr): 该函数用于初始化互斥锁。mutex是指向互斥锁的指针,attr是指向互斥锁属性的指针,通常设为NULL表示使用默认属性。 int pthread_mutex_lock(pthread_mutex_t *mute ...
代码随想录算法训练营day20 | 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树
发表于2023-07-31|刷题笔记
刷题笔记day20 654.最大二叉树 文章讲解:代码随想录 是否自己做出来通过全部用例:是 遇到的困难/犯的错误 借鉴使用中序和后序遍历序列构造二叉树,对最大二叉树进行区间划分。 自己写的代码 class Solution { public: TreeNode* getmaxtree(vector<int>& nums, int begin, int end) { if (begin >= end) return NULL; int maxnumindex = begin; // 找出最大值 for (int i = begin + 1; i < end; ++i) { if (nums[i] > nums[maxnumindex]) { maxnumindex = i; } } TreeNode* nod ...
代码随想录算法训练营day18(day19补) | 找树左下角的值 路径总和 从中序与后序遍历序列构造二叉树
发表于2023-07-30|刷题笔记
刷题笔记day18 找树左下角的值 文章讲解:代码随想录 是否自己做出来通过全部用例:是 遇到的困难/犯的错误 用的层序遍历方法,输出最后一层的第一个节点。 自己写的代码 class Solution { public: int findBottomLeftValue(TreeNode* root) { queue<TreeNode*> que; vector<vector<int>> result; if (root) que.push(root); while (!que.empty()) { int size = que.size(); vector<int> tmp; while (size--) { TreeNode* cur = que.front(); que.pop(); ...
代码随想录算法训练营day17(day19补) | 110.平衡二叉树 257.二叉树的所有路径 404.左叶子之和
发表于2023-07-30|刷题笔记
刷题笔记day17 110.平衡二叉树 文章讲解:代码随想录 是否自己做出来通过全部用例:否 遇到的困难/犯的错误 没有思路。 自己写的代码 看了题解后写的代码: class Solution { public: int getheight(TreeNode* node) { if (!node) return 0; int leftheight = getheight(node->left); if (leftheight == -1) return -1; int rightheight = getheight(node->right); if (rightheight == -1) return -1; int result; if (abs(leftheight - rightheight) > 1) return -1; result = 1 + max(leftheight, rightheight) ...
代码随想录算法训练营day16(day18补) | 104.二叉树的最大深度 111.二叉树的最小深度 完全二叉树的节点个数
发表于2023-07-29|刷题笔记
刷题笔记day16 104.二叉树的最大深度 文章讲解:代码随想录 是否自己做出来通过全部用例:是 遇到的困难/犯的错误 想到的是用层序遍历的迭代法来做。 自己写的代码 层序遍历: class Solution { public: int maxDepth(TreeNode* root) { queue<TreeNode*> que; if (!root) return 0; que.push(root); int depth = 0; while (!que.empty()) { ++depth; int size = que.size(); while (size--) { TreeNode* node = que.front(); que.pop(); if (node-> ...
代码随想录算法训练营day15(day16补) | 二叉树的层序遍历 翻转二叉树 对称二叉树
发表于2023-07-27|刷题笔记
刷题笔记day15 二叉树的层序遍历 文章讲解:代码随想录 是否自己做出来通过全部用例:是 自己写的代码 迭代法: class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { queue<TreeNode*> que; vector<vector<int>> res; if (root) que.push(root); while (!que.empty()) { vector<int> vec; int size = que.size(); for (int i = 0; i < size; i++) { TreeNode* node = que.front(); que.po ...
1234
avatar
jhhuang
文章
40
标签
0
分类
4
Follow Me
公告
This is my Blog
最新文章
集度面经2023-10-17
代码随想录算法训练营day40 | 343.整数拆分2023-09-27
代码随想录算法训练营day39 | 62.不同路径 63.不同路径 II2023-09-27
实习总结2023-09-19
代码随想录算法训练营day38 | 509.斐波那契数 70.爬楼梯 746.使用最小花费爬楼梯2023-09-17
分类
  • C++八股1
  • 刷题笔记27
  • 实习收获10
  • 面经1
归档
  • 十月 20231
  • 九月 20236
  • 八月 20237
  • 七月 202326
网站资讯
文章数目 :
40
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2023 By jhhuang
框架 Hexo|主题 Butterfly