06 2019 档案

摘要:class Solution { public: bool canFinish(int numCourses, vector>& prerequisites) { //验证是否为DAG,每次验证指向的是否已经存在于当前图中 //建图 vector indegree(numCourses,0);//入度 ... 阅读全文
posted @ 2019-06-24 17:43 Joel_Wang 阅读(216) 评论(0) 推荐(0) 编辑
摘要:第一选择是将其转化成图用动态规划,但这样还是太麻烦 使用递归的思路,对于当前的节点root,分别求左右孩子到当前节点的单项路径权值最大的路径权值,然后记包含当前节点的路径权值为 path_price=root->val+left_gain+right_gain,取sum_max和他较大的; 返回左右 阅读全文
posted @ 2019-06-24 15:29 Joel_Wang 阅读(209) 评论(0) 推荐(0) 编辑
摘要:C++版 数组和字符串 正文 链表: 正文 树与图: 树: leetcode236. 二叉树的最近公共祖先 递归(先序) leetcode124二叉树最大路径和 递归 图: leetcode 547朋友圈(DFS,并查集) leetcode 207课程表(拓扑排序) leetcode 315 计算右 阅读全文
posted @ 2019-06-24 14:40 Joel_Wang 阅读(321) 评论(0) 推荐(0) 编辑
摘要:直接层序遍历,结果有部分测试样例超时; 究其原因,是因为距离计算每次都要调用函数过于复杂,由于两两单词间计算距离,并且计算距离时又需要对每个字母进行遍历,因此timeO(n^2*m) 改变距离的计算,对其做预处理,列出每个单词的状态,比如hog 可列为 *og,h*g,ho*;通过临接表来表示,即一 阅读全文
posted @ 2019-06-19 18:59 Joel_Wang 阅读(191) 评论(0) 推荐(0) 编辑
摘要:C++采用哈希表,时间复杂度O(n),空间复杂度O(n)空间复杂度应该可以降低; 阅读全文
posted @ 2019-06-19 11:38 Joel_Wang 阅读(120) 评论(0) 推荐(0) 编辑
摘要:与83类似,不过需要注意去除连续的重复片段的情况,如2 2 3 3这种情况,以及【1,1】这种情况下最终的cur为NULL,因此不能再令cur=cur->next; 阅读全文
posted @ 2019-06-13 16:59 Joel_Wang 阅读(278) 评论(0) 推荐(0) 编辑
摘要:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* ... 阅读全文
posted @ 2019-06-13 16:48 Joel_Wang 阅读(115) 评论(0) 推荐(0) 编辑
摘要:优先队列容器,使用小顶堆排序;timeO(nlogn) spaceO(n) 阅读全文
posted @ 2019-06-13 16:35 Joel_Wang 阅读(175) 评论(0) 推荐(0) 编辑
摘要:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode... 阅读全文
posted @ 2019-06-13 16:04 Joel_Wang 阅读(105) 评论(0) 推荐(0) 编辑
摘要:time O(n) spaceO(n) 的方法: 还是借助哈希表,所有字母初始化为0,将t中出现的所有字母次数全都记录在哈希表里; 采用双指针,分别为一个头指针head,和尾指针tail。flag记录当前[head,tail)没有出现的字母的个数; 1. flag不为0时,更改s[tail]的哈希值 阅读全文
posted @ 2019-06-13 11:09 Joel_Wang 阅读(172) 评论(0) 推荐(0) 编辑
摘要:1先利用符号栈转化为逆波兰表达式,并添加‘,’作为一个数字的结尾; 2然后利用数字栈计算逆波兰表达式的值; 阅读全文
posted @ 2019-06-12 22:39 Joel_Wang 阅读(366) 评论(0) 推荐(0) 编辑
摘要:time O(n) space O(1) 阅读全文
posted @ 2019-06-12 16:07 Joel_Wang 阅读(117) 评论(0) 推荐(0) 编辑
摘要:class Solution { public: vector> dirs={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}}; void gameOfLife(vector>& board) { //time O(2*9*m*n) int r=board.size(); ... 阅读全文
posted @ 2019-06-12 11:22 Joel_Wang 阅读(244) 评论(0) 推荐(0) 编辑
摘要:class Solution { public: int maxArea(vector& height) { //双指针法:从最宽的容器开始计算,当更窄的容器盛水量要大于之前容器,那必须比之前容器高,因此可以移动两个指针,直到最窄time O(n),space O(1); int low=0; int high=height.size... 阅读全文
posted @ 2019-06-12 10:17 Joel_Wang 阅读(148) 评论(0) 推荐(0) 编辑
摘要:class Solution { public: vector findClosestElements(vector& arr, int k, int x) { //查找,二分法找到那个数的lowerbound然后左右指针比较;O(logn+2k) vector::iterator p=lower_bound(arr.begin(),arr.end(... 阅读全文
posted @ 2019-06-10 12:08 Joel_Wang 阅读(408) 评论(0) 推荐(0) 编辑
摘要:采用递归分治的策略来解决汉诺塔问题 阅读全文
posted @ 2019-06-10 10:25 Joel_Wang 阅读(279) 评论(0) 推荐(0) 编辑
摘要:采用一个哈希表存储两个数的和,再遍历另外两个数组的和,time O(n2) space O(n2) 阅读全文
posted @ 2019-06-06 12:09 Joel_Wang 阅读(160) 评论(0) 推荐(0) 编辑
摘要:class Solution { public: bool possibleBipartition(int N, vector>& dislikes) { //建一个图,找一个元素把所有敌对的元素染色-1,再对自己染色为1 vector> M(N+1,vector(N+1,0)); for(auto dis:dislikes){ ... 阅读全文
posted @ 2019-06-05 10:42 Joel_Wang 阅读(245) 评论(0) 推荐(0) 编辑
摘要:单调递减栈来做,time O(n),spaceO(n)需要一个哈希map 阅读全文
posted @ 2019-06-04 11:07 Joel_Wang 阅读(233) 评论(0) 推荐(0) 编辑
摘要:class Solution { public: vector productExceptSelf(vector& nums) { //用除法必须要考虑元素为0的情况,用双重循环要考虑数组过大超时的情况 //双指针双vector O(n)time O(n) space int n=nums.size(); vector... 阅读全文
posted @ 2019-06-03 22:59 Joel_Wang 阅读(146) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示