Leetcode
此后无良辰
路漫漫其修远兮~
展开
-
一道题解释树形dp【此后无良辰】
题面描述基本思路首先一看题 死死的认为树不就是图吗,最短路算法套上去不就得了吗然后写了一个spfa和djstlaint spfa(int x,int N){//SPAF queue<int> q; for(int i=0;i<N;++i){ dis[i]=inf; vis[i]=0; } q.push(x); vis[x]=1;dis[x]=0; while(!q.empty()){原创 2020-10-07 15:42:19 · 267 阅读 · 2 评论 -
一道题解释Hierholzer 算法
题面描述基本思路1.普通的暴力回溯,寻找所有的可能性做比较(太慢了)2.Hierholzer 算法逆用Hierholzer 算法用于在连通图中寻找欧拉路径,其流程如下:1.从起点出发,进行深度优先搜索。2.每次沿着某条边从某个顶点移动到另外一个顶点的时候,都需要删除这条边。3.如果没有可移动的路径,则将所在节点加入到栈中,并返回。正序我们是很难在保证字典序最小而且要最后走进死胡同的(有结论只存在一个死胡同,入度与出度差为 1 的节点)当我们顺序地考虑该问题时,我们也许很难解决该问题,原创 2020-08-27 10:01:55 · 623 阅读 · 1 评论 -
一道题解释树形dp
题面描述基本思路树形dp选取和不选取分别用f和g存储f表示选取o结点最大得到的答案g表示不选取o结点最大得到的答案/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * };原创 2020-08-05 17:17:26 · 125 阅读 · 0 评论 -
求二叉树最大高度【此后无良辰】
题面描述基本思路1.dfs/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: int ans; vo原创 2020-07-28 11:23:35 · 129 阅读 · 0 评论 -
一道题解释逆向记忆化搜索
题面描述基本思路记忆化搜索class Solution {public: int n; vector<vector<int>> rec; vector<int> val; int dfs(int left,int right) { if(left>=right-1) return 0; if(rec[left][right]!=-1) return r原创 2020-07-19 16:51:40 · 176 阅读 · 0 评论 -
一道题解释反向dp【此后无良辰】
题目描述基本思路正向dp: 从【0】【0】处往【n-1】【m-1】减一处dp因为只能向下,向右只有两种状态转移可以很容易的写出状态转移方程但考虑下列情况绿色路径「从出发点到当前点的路径和」为 1,「从出发点到当前点所需的最小初始值」为 3。蓝色路径「从出发点到当前点的路径和」为 -1,「从出发点到当前点所需的最小初始值」为 2。我们希望「从出发点到当前点的路径和」尽可能大,而「从出发点到当前点所需的最小初始值」尽可能小。这两条路径各有优劣。在上图中,我们知道应该选取绿色路径,因为蓝色路径原创 2020-07-12 16:27:02 · 451 阅读 · 0 评论 -
一道题解释搜索和dp【此后无良辰】
题目描述Leetcode(每日一题)最佳买卖股票时机含冷冻期2020.7.10基本思路1.暴力dfs,尝试每一种可能性,不觉得能过,但还是尝试一下class Solution {public: int n,ans=0; void dfs(int now,int sym,int tem_ans,int tem_value,vector<int>& prices) { if(now>=n) {ans=ans>te原创 2020-07-10 10:53:06 · 373 阅读 · 0 评论 -
将有序数组转换为二叉搜索树【此后无良辰】
题面描述基本思路二叉搜索树的中序遍历是升序序列,题目给定的数组是按照升序排序的有序数组,因此可以确保数组是二叉搜索树的中序遍历序列。给定二叉搜索树的中序遍历,是否可以唯一地确定二叉搜索树?答案是否定的。如果没有要求二叉搜索树的高度平衡,则任何一个数字都可以作为二叉搜索树的根节点,因此可能的二叉搜索树有多个如果增加一个限制条件,即要求二叉搜索树的高度平衡,是否可以唯一地确定二叉搜索树?答案仍然是否定的。直观地看,我们可以选择中间数字作为二叉搜索树的根节点,这样分给左右子树的数字个数相同或只相差原创 2020-07-03 16:47:30 · 182 阅读 · 0 评论 -
一道题解释二个栈实现队列功能【此后无良辰】
题面描述6.30每日一题基本思路使用两个栈一个栈q1用来进行插入操作一个栈q2用来进行删除操作每一次删除操作判断q2是否为空,为空则将q1数据全部压入q2不为空则返回top以下解说图来自于leetcode官方class CQueue {public: stack<int> q1; stack<int> q2; CQueue() { // while(!q1.empty()) q1.pop();原创 2020-06-30 09:32:22 · 143 阅读 · 0 评论 -
三种方法找到数组中的第k个最大元素【此后无良辰】
题面描述基本思路1.排序返回值class Solution {public: int findKthLargest(vector<int>& nums, int k) { sort(nums.begin(),nums.end()); return nums[nums.size()-k]; }};2.根据快速排序进行分治class Solution {public: int quickSelect(vector&原创 2020-07-03 15:54:06 · 751 阅读 · 0 评论 -
一道题解释前缀和+二分查找【此后无良辰】
题目描述基本思路1.暴力枚举法 o(n^2);class Solution {public: int minSubArrayLen(int s, vector<int>& nums) { int n = nums.size(); if (n == 0) { return 0; } int ans = INT_MAX; for (int i = 0; i < n;原创 2020-06-28 10:22:16 · 360 阅读 · 0 评论 -
一道题解释原地哈希【此后无良辰】
题目描述(Leetcode每日一题)基本思路1.此题如果没有空间限制可以使用普通哈希表功能记录2.此题如果没有时间限制可以使用二分查找把时间控制在nlonn但是这道题全有于是 今天学到一个别人自创的算法名字(也不知道是否权威)原地哈希因为哈希表其实也是数组,而当我们的输入数据的载体也是数组时,可以自行规定index和数据的关系对于这道题的关键·在于规定nums[nums[i]-1]=nums[i],也就是规定下标为i的数组放i+1的数怎么实现因为没有额外的o(n)的辅助空间,我原创 2020-06-27 10:24:08 · 402 阅读 · 1 评论 -
一道题解释记忆化搜索【此后无良辰】
题目描述(Leetcode每日一题打卡)基本思路1.dfs+回溯class Solution {public: int len; map<string,int> dir; bool sym=0; void dfs(string s,int pos) { if(pos==len) {sym=1;return;} for(int i=pos;i<len;i++) { str原创 2020-06-25 13:33:43 · 184 阅读 · 0 评论