自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TSWorld

不与世俗苟同,把梦想开成花

  • 博客(182)
  • 资源 (1)
  • 收藏
  • 关注

原创 LeetCode 49. 字母异位词分组

leetcode49题解

2023-05-07 20:23:10 97 1

原创 C++:Command Line Arguments

C++:Command Line Arguments

2023-03-23 17:17:37 419

原创 C++:unique_ptr

C++ unique_ptr 智能指针笔记

2023-02-07 14:00:57 133

原创 How to debug LLVM by VS2019 on Windows

怎么在VS2019调试LLVM源码

2023-02-05 18:38:27 535

原创 C++:override identifier

Function overriding:其派生类中对基类函数的重新定义,具有相同的返回类型和参数。为了避免这种错误发生,通过使用override来定义基类中的函数避免重写。

2023-01-17 20:09:17 84

原创 C++:Measure execution time of a function

计算C++程序运行时间。

2022-10-26 15:23:09 326

原创 Static Single Assignment(SSA)

Static Single Assignment(SSA) 是构建 IR(intermediate representation) 的一种方式

2022-10-26 15:10:13 855

原创 LLVM Example of Fibonacci

一个简单的例子

2022-10-24 19:55:14 144

原创 LLVM学习入门(5):扩展语言:控制流

本篇文章将扩展 Kaleidoscope 的功能,使其具有 if/then/else 表达式以及一个简单的 for 循环。

2022-10-10 17:45:30 711

原创 LLVM学习入门(4):添加 JIT 和 Optimizer 支持

本文是使用 LLVM 开发新语言 Kaleidoscope 教程第四篇文章。前三篇介绍了一种简单语言的实现并增加了对生成 LLVM IR的支持。本篇将介绍两种新的技术:为我们的语言添加优化器支持,以及添加 JIT compiler 支持。这些功能将会让 Kaleidoscope 更加高效。

2022-10-08 13:00:31 879

原创 LLVM学习入门(3):生成 LLVM 中间代码 IR

主要实现 AST 转化为 LLVM IR 的功能。

2022-09-16 15:55:13 3328

原创 LLVM学习入门(2):实现解析器 Parser 和语法树 AST

实现解析器 Parser 和语法树 AST

2022-09-02 16:12:01 2035 3

原创 LLVM学习入门(1):Kaleidoscope语言及词法分析

通过LLVM实现了一个简单的编译器,在学习的过程中加入自己的一些理解笔记。

2022-08-17 17:58:18 995

原创 C++面向对象(2):Templates

Description:Templates 使我们编写相同的代码不需要考虑不同的类型。Templates 在编译时候展开,类似宏。根据不同类型展开不同副本。例一:冒泡排序代码:// CPP code for bubble sort// using template function#include <iostream>#include <cstdlib>#include <cstdio>using namespace std;template &lt

2022-04-30 11:00:22 189

原创 C++面向对象(1):防卫式声明

Description:C++ 中的条件 Header Guards(防卫式声明)是条件编译指令,有助于避免由于程序员的错误多次定义相同的函数或变量时出现的错误。 根据 C++,当一个函数或一个变量被多次定义时,它会产生一个错误。例一:定义同名函数#include <iostream>using namespace std;void complex() { cout<<"this number is complex number!"<<endl; retu

2022-04-28 13:00:48 2694

原创 牛客BM44. 有效括号序列

Description:题目大意:括号匹配。解题思路:算法标签:栈代码:class Solution {public: bool isValid(string s) { stack<char>data; int len = s.length(); if(len % 2 == 1) return false; if(s[0] == '}' || s[0] == ']' || s[0] ==

2022-04-25 10:38:19 115

原创 牛客BM43. 包含min函数的栈

Description:题目大意:实现可以输出最小值的栈。解题思路:算法标签:栈创建两个栈,一个存储数值,一个存储最小值出栈的时候,minn 改为 top即可代码:class Solution {public: int minn; stack<int>number; stack<int>minnumber; void push(int value) { if(number.empty()) m

2022-04-25 10:28:31 111

原创 牛客BM42. 用两个栈实现队列

Description:题目大意:用两个栈实现队列。解题思路:算法标签:栈代码:class Solution{public: void push(int node) { stack1.push(node); return; } int pop() { while(!stack2.empty()) stack2.pop(); while(!stack1.empty()) {

2022-04-24 11:00:33 320

原创 牛客BM41. 输出二叉树的右视图

Description:题目大意:给出二叉树的前序遍历和中序遍历,输出右视图。解题思路:算法标签:BFS通过前序遍历和中序遍历构造二叉树。利用层序遍历找到右视图。代码:class Solution {public: vector<int> rightSideView(TreeNode* root) { unordered_map<int ,int>rightview; int maxdepth = -1;

2022-04-22 10:17:49 1062

原创 LeetCode 199. 二叉树的右视图

Description:题目大意:给定一个二叉树,输出其右视图。解题思路:方法一:算法标签:DFS利用 DFS 先访问右节点,再访问左节点。如果第一次访问对应深度的节点,说明这个节点是最右节点代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : va

2022-04-22 09:12:50 194

原创 牛客BM40. 重建二叉树

Description:题目大意:利用前序遍历和中序遍历构造二叉树。解题思路:算法标签:二叉树,递归构建中序遍历元素和下标的映射利用前序遍历的特性,第一个点便是根节点然后根据根节点在中序遍历中找到对应的下标下标左边的构造左子树,下标右边的构造右子树代码:/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right;

2022-04-21 09:15:48 253

原创 C++ STL(6):Map

Map:描述:Map 是 C++ 的一种映射容器,每个元素拥有一个 key 值,和一个对于的映射 map 值,而且没有两个 map 拥有相同的 key 值,意味着 Map 是一种一对多的映射容器。示例:代码:#include <iostream>#include <cstdlib>#include <cstdio>#include <map>#include <iterator>using namespace std;int

2022-04-20 17:01:18 1485

原创 牛客BM39. 序列化二叉树

Description:题目大意:将二叉树序列号然后反序列化解题思路:算法标签:BFS,层序遍历代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: //

2022-04-20 16:02:30 299

原创 LeetCode 200. 岛屿数量

Description:题目大意:给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。解题思路:算法标签:dfs利用dfs求连通块。代码:class Solution {public: int xx[4] = {-1,1,0,0}; int yy[4] = {0,0,-1,1}; void dfs(vector<vector<char>>& grid , int x,int y , int m,int n

2022-04-20 09:32:35 336

原创 LeetCode 128. 最长连续序列

Description:题目大意:Input解题思路:算法标签:哈希表利用 unordereds_set 将所有元素加入,去重,不需要排序对每个元素依次遍历,前面的元素不存在再访问,因为那样才不连续代码:class Solution {public: int longestConsecutive(vector<int>& nums) { // 速度更快 unordered_set<int>number;

2022-04-18 16:48:33 715

原创 LeetCode 1143. 最长公共子序列

Description:题目大意:求两个字符串的最长公共子序列解题思路:算法标签:动态规划dp[i][j]dp[i][j]dp[i][j] 表示 text1[0:i−1]text1[0:i - 1]text1[0:i−1] 和 text1[0:j−1]text1[0:j - 1]text1[0:j−1] 的最长公共子序列如果 text1[i]==text2[j]text1[i] == text2[j]text1[i]==text2[j],则dp[i][j]=dp[i−1][j−1]+1dp[

2022-04-16 16:52:41 818

原创 LeetCode 14. 最长公共前缀

Description:题目大意:给定一个字符串数组,求它们的最长公共前缀。解题思路:算法标签:字符串,子串初始化最长公共前缀为第一个字符串依次比对即可代码:class Solution {public: string longestCommonPrefix(vector<string>& strs) { string ans; if(strs.size() == 0) return ans;

2022-04-16 16:26:16 268

原创 牛客BM38. 在二叉树中找到两个节点的最近公共祖先

Description:题目大意:在一个二叉树上给出两个点,找到他们的最近公共祖先。解题思路:算法标签:DFSDFS,求根节点到两个节点的路径 load1和 load2。因为最近公共祖先的到根节点都相同,找到两个最后相同的点即为最近公共祖先。代码:/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */class Solution {publi

2022-04-08 15:34:33 731

原创 牛客BM37. 二叉搜索树的最近公共祖先

Description:题目大意:给出两个节点,在二叉搜索树上找到其最近公共祖先。解题思路:算法标签:递归利用二叉搜索树的性质进行查找。代码:/* * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */class Solution {p

2022-04-07 10:01:34 383

原创 牛客BM36. 判断是不是平衡二叉树

Description:题目大意:判断是不是平衡二叉树,左右子树高度绝对值不超过 1解题思路:算法标签:递归代码:class Solution {public: bool isbalance = true; int depth(TreeNode* root) { if(root == NULL) return 0; // 求左右子树的深度 int leftdepth = depth(root

2022-04-07 09:50:50 268

原创 牛客BM35. 判断是不是完全二叉树

Description:题目大意:判断是不是完全二叉树解题思路:算法标签:BFS完全二叉树的空节点在最后结尾处进行层序遍历,如果未到结尾处就访问到空节点,则不是完全二叉树代码:/* * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; *

2022-04-07 09:36:03 758

原创 牛客BM34. 判断是不是二叉搜索树

Description:题目大意:给出一个二叉树,判断是不是二叉搜索树解题思路:算法标签:DFS二叉树搜索树的根节点大于左子树节点,小于右子树节点初始化 root 的左端节点为 INT_MIN,右端节点为 INT_MAX递归左右子树代码:/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nul

2022-04-07 09:32:42 130

原创 牛客BM33. 二叉树的镜像

Description:题目大意:给定一个二叉树,将其变换为源二叉树的镜像。解题思路:算法标签:递归代码:/* * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */class Solution {public: TreeNode

2022-04-07 09:27:33 712

原创 牛客BM32. 合并二叉树

Description:题目大意:合并两棵二叉树。合并规则是:都存在的结点,就将结点值加起来,否则空的位置就由另一个树的结点来代替。解题思路:算法标签:递归代码:/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */class Solution {public: TreeNode* mergeTrees(TreeNode* t1, TreeN

2022-04-07 09:24:53 254

原创 牛客BM31. 对称的二叉树

Description:题目大意:判断是不是一个对称二叉树解题思路:算法标签:递归如果左右都为 NULL ,返回 true如果只有一个为 NULL ,返回 false代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {

2022-04-06 11:09:08 472

原创 牛客BM30. 二叉搜索树与双向链表

Description:题目大意:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。解题思路:算法标签:二叉树中序遍历二叉搜索树的中序遍历就是有序的遍历先找到二叉搜索树的最左端节点,即为链表的头节点设置 preNode 作为当前 tree 的前驱节点,preNode 的后继节点即为 当前 tree代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode

2022-04-06 11:01:41 182

原创 牛客BM29. 二叉树中和为某一值的路径(一)

Description:题目大意:给定一个二叉树root和一个值 sum ,判断是否有从根节点到叶子节点的节点值之和等于 sum 的路径。解题思路:算法标签:DFS代码:/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */class Solution {public: bool DFS(TreeNode* root,int tot,int

2022-04-06 09:37:28 114

原创 牛客BM28. 二叉树的最大深度

Description:题目大意:求二叉树的最大深度解题思路:算法标签:DFS代码:/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */class Solution {public: int ans; void DFS(TreeNode* root,int index) { if(root == NULL)

2022-04-06 09:31:06 144

原创 牛客BM27. 按之字形顺序打印二叉树

Description:题目大意:二叉树奇数行从左到右打印,偶数行从右到左打印解题思路:算法标签:二叉树层序遍历,BFS,栈按照二叉树层序遍历的思想如果是奇数行按照层序遍历顺序如果是偶数行,设置一个栈,然后存入临时数组中去代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), l

2022-04-06 09:28:58 220

原创 牛客BM26. 求二叉树的层序遍历

Description:题目大意:输出二叉树的层序遍历解题思路:算法标签:BFS代码:/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */class Solution {public: vector<vector<int> > levelOrder(TreeNode* root) { vector&l

2022-04-06 09:25:51 210

信息学中的守恒法应用

信息学是五大学科,这个对学习算法的同学有很大帮助,我也希望你可以取得更大的进步

2018-12-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除