- 博客(44)
- 收藏
- 关注
原创 UE4 FString转TCHAR
在ue中用到FindConsoleVariable,需要从FString转TCHAR,总是忘记,*FString就行。IConsoleVariable* FConsoleManager::FindConsoleVariable(const TCHAR* Name, bool bTrackFrequentCalls) const示例:FString Text = TEXT("xxx") + FString::FormatAsNumber(0);IConsoleManager::Get().FindC
2021-12-06 16:39:54
2492
1
原创 leetcode1359 有效的快递序列数目
1359 count-all-valid-pickup-and-delivery-options题目给你 n 笔订单,每笔订单都需要快递服务。请你统计所有有效的 收件/配送 序列的数目,确保第 i 个物品的配送服务 delivery(i) 总是在其收件服务 pickup(i) 之后。由于答案可能很大,请返回答案对 10^9 + 7 取余的结果。思路是一道排列组合题,找到递推关系即可。一直f(i-1),求f(i),则加入p(i)和d(i)p(i)和d(i)连续,则类似在f(i-1)的2(i-1
2020-06-06 22:57:52
243
原创 leetcode7 整数反转
7 reverse-integer题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。思路可以用long long来做,然后再去比较是否越界,代码略通过求余,将值反向相加,需要考虑到越界的问题class Solution {public: int MAX1 = INT_MAX/10, MAX2 = I
2020-06-06 22:26:04
141
原创 leetcode面试题37 二叉树的序列化和反序列化
二叉树的序列化和反序列化题目请实现两个函数,分别用来序列化和反序列化二叉树。思路题目的示例是层次遍历,主要就是层次遍历的过程中考虑怎么序列化和反序列化。反序列化的时候,需要将字符串分割为对应的值或者null(用到了字符串分割)。/** * Definition for a binary tree node. * struct TreeNode { * int val; ...
2020-05-05 20:09:13
187
原创 leetcode98 验证二叉搜索树
98 validate-binary-search-tree题目给定一个二叉树,判断其是否是一个有效的二叉搜索树。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNod...
2020-05-05 16:32:15
176
原创 leetcode103 二叉树的锯齿形层次遍历
103 binary-tree-zigzag-level-order-traversal题目给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。思路层次遍历,用flag标记每一层是否需要reverse/** * Definition for a binary tree node. * struct TreeNode ...
2020-05-01 15:26:10
119
原创 leetcode21 合并两个有序链表
21 merge-two-sorted-lists题目将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路一使用一个dummy head,其后接排序的节点。/** * Definition for si...
2020-05-01 14:58:36
85
原创 leetcode面试题56 - I 数组中数字出现的次数
leetcode面试题56 - I 数组中数字出现的次数题目一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10...
2020-04-28 21:33:43
123
原创 leetcode82 删除排序链表中的重复元素 II
82 remove-duplicates-from-sorted-list-ii题目给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->...
2020-04-27 22:30:10
94
原创 leetcode33 搜索旋转排序数组
33 search-in-rotated-sorted-array题目假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示...
2020-04-27 22:06:41
95
原创 c++ 二进制、八进制、十六进制
进制表示输出十进制正常表示dec二进制0bbitset八进制0oct十六进制0xhex#include <iostream>#include <bitset>using namespace std;void test_radix(){ cout << "0b110: " << ...
2020-04-17 19:56:38
309
原创 leetcode55 跳跃游戏
55 jump-game题目给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。思路当前位置如果可以到达,且当前位置跳跃的最远距离比已经能...
2020-04-17 10:07:38
99
原创 leetcode31 下一个排列
31 next-permutation题目实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1思路找下一个...
2020-04-16 22:33:38
163
原创 leetcode面试题68 - II 二叉树的最近公共祖先
面试题68 - II 二叉树的最近公共祖先给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”思路与二叉搜索树的最近公共祖先相比,少了一个有序的条件,可以在左右子树查找p和q,然后返回。/** *...
2020-04-16 21:13:24
277
原创 leetcode面试题68-I 二叉搜索树的最近公共祖先
面试题68-I 二叉搜索树的最近公共祖先题目给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2...
2020-04-16 21:08:44
122
原创 leetcode15 三数之和
3 3sum题目给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]思路在2su...
2020-04-15 22:28:24
96
原创 leetcode542 01矩阵
542 01-matrix给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:0 0 00 1 00 0 0输出:0 0 00 1 00 0 0多源BFS,将所有的0压入队列,相当于有一个超级源点。class Solution {public: vector<vector<int>...
2020-04-15 18:52:02
148
原创 leetcode93 复原ip地址
93 restore-ip-addresses题目给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。示例:输入: “25525511135”输出: [“255.255.11.135”, “255.255.111.35”]思路DFS,搜索以i为起始的s[i,i], s[i,i+1], s[i,i+2]是否符合255的规范,符合则加入结果,继续向下搜索。注意点:00这...
2020-04-14 21:49:50
166
原创 leetcode71 简化路径
71 simplify-path题目以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径请注意,返回的规范路径必须始终以斜杠 /...
2020-04-14 19:35:08
177
原创 shared_ptr的简单实现
shared_ptr:使用引用计数传入指针的构造函数拷贝构造函数赋值函数析构函数返回引用计数->和*的重载注意事项构造函数是explicit的,防止smart_ptr< int > sp = p 的使用计数需要用int**ptr++是先++的,所以需要括号或者++*ptrsmart_ptr.htemplate<typename T>c...
2020-04-14 17:45:52
140
原创 leetcode24 两两交换链表中的节点
24 swap-nodes-in-pairs题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。思路这是交换k个节点的特殊情况,k=2。/** * Definition for singly-linked list. * struct ListNode { * int val; * List...
2020-04-14 17:32:33
94
原创 leetcode547 朋友圈
547 friend-circles题目:班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你...
2020-04-13 21:16:10
109
原创 leetcode25 k个一组反转链表
25 reverse-nodes-in-k-group题目给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。思路和反转链表是一个系列的题目,首先写出反转1-n个节点的函数reverseK,返回反转后的头结点。然后根据题意,先数出k各节点,进行翻转,此时原头结点...
2020-04-13 10:37:09
133
原创 leetcode92 反转链表ii
92 reverse-linked-list-ii题目:反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。思路简单一点的 反转整个链表 的递归思路如下:class Solution {public: ListNode* reverseList(ListNode* head) { if(head == nullpt...
2020-04-13 10:00:04
113
原创 leetcode206 反转链表
206 reverse-linked-list题目:反转一个单链表。非递归:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */...
2020-04-12 17:00:27
92
原创 面试题46 把数字翻译成字符串
面试题46 把数字翻译成字符串题目给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", “bwfi”, “bczi...
2020-04-12 16:07:49
176
原创 相邻两球不同的三色球排列
看到一道小球问题,也有类似的染色问题,但是后面这个没有数量要求,用dp可以解决。题目:现在共有a个红球,b个蓝色球,c个绿球,要求相邻的球颜色不同(相同颜色的球不做区分,例如红色的表示都一样),共有多少种摆法思路一开始觉得可以用dp做,然而dp的base状态初始化实在是太难了(所有abs[a-b] == 1的情况都要初始化为1,不然就会漏算),递归大法好。int ans;void co...
2020-04-12 15:32:22
1145
原创 leetcode53 连续子数组的最大和
53 maximum-subarray题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。思路以nums[i]为结尾的连续子数组的最大和,要么是 以nums[i-1]为结尾的连续子数组最大和+num...
2020-04-12 14:04:08
198
原创 leetcode106 从中序与后序遍历序列构造二叉树
106 number-of-islands题目:根据一棵树的中序遍历与后序遍历构造二叉树。思路直白地从后续遍历的最后一个值把中序和后续的数组分成两部分,然后进行递归/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * Tree...
2020-04-12 13:38:49
88
原创 leetcode200 岛屿数量
200 number-of-islands题目:给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例:输入:11000110000010000011输出: 3思路深度优先搜索,搜索后直接改变原值’1’到’0’,作为访问过的标志(如果不能改变原值,...
2020-04-12 12:53:00
121
原创 leetcode221 最大正方形
221 longest-consecutive-sequence题目:在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4dp[i][j表示i行j列为右下角的最大正方形边长,则dp[i][j] = min( dp[i-1][j-1], dp[i-1][j...
2020-04-12 12:36:11
94
原创 leetcode128 最长连续序列
128 longest-consecutive-sequence题目:给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。思路最直接的想法是排序,然后数连续的长度,但是要求是O(n),所以想到用set存储,然后数数。因为每个...
2020-04-11 20:57:33
162
原创 leetcode151 翻转字符串里的单词
151 reverse-words-in-a-string题目:给定一个字符串,逐个翻转字符串中的每个单词。输入: " hello world! "输出: “world! hello”就是字符串分割问题。class Solution {public: void split(const string& s, const string& d, vector&l...
2020-04-11 19:59:49
118
1
原创 leetcode887 鸡蛋掉落
887 super-egg-drop题目:你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一...
2020-04-11 17:42:02
278
原创 leetcode70 爬楼梯
70 climbing-stairs题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。思路:即为斐波那契数列 1 2 3 5 8 13 ……代码:class Solution {public: int climbStairs(int n) { if(n&l...
2020-04-11 10:29:41
74
原创 leetcode22 括号生成
括号生成数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。1.递归,最终判断是否是合法的字符串class Solution {public: vector<string> ans; bool is_valid(string s) { int left_cnt = 0, i = 0; ...
2020-04-11 09:42:43
129
原创 一行代码可以完成的事
一行代码可以完成的事最大公因数最小公倍数交换最大公因数int gcd(int a, int b) {return b? gcd(b, a%b) : a;}最小公倍数int lcm(int a, int b) {return a*b/gcd(a, b); }交换void swap(int& a, int& b) { a^=b^=a^=b; }// a^=b; b^=...
2020-03-12 16:12:32
84
原创 C++ 强制类型转换
强制类型转换const_castreinterpret_caststatic_cast & dynamic_castconst_castconst_cast用于修改类型的const、volatile属性。const_cast<?>(?), <>中必须是指针、引用或者右值 - (the type in a const_cast must be a pointer...
2020-02-03 13:51:42
860
原创 Leetcode1035 不相交的线
Leetcode 1035 Uncrossed Lines1035 Uncrossed Lines题目:给定A,B两个数组,将两个数组中相等的值连起来,但是不能有交叉。例1:Input: A = [1,4,2], B = [1,2,4]Output: 2这是动态规划问题,以示例2来看:例2:Input: A = [2,5,1,2,5], B = [10,5,2,1,5,2]...
2019-08-31 23:48:50
338
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人