![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
Y_Yl
这个作者很懒,什么都没留下…
展开
-
62.不同路径 c++
62.不同路径写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.dp 5如何想到?有多少种路径,典型的动态规划路径问题解题步骤字问题:求最后的步骤等于上面那一格和左面一格的步骤总数转移方程:f[i][j]=f[i-1][j]+f[i][j-1]初始条件f[0][0]=1,最上面一行和左面一行为1计算顺序是从左到右从上到下符合动态规划计算顺序class Solution {public: int uniquePaths(int原创 2020-08-24 12:26:44 · 267 阅读 · 0 评论 -
122. 买卖股票的最佳时机 II c++
122. 买卖股票的最佳时机 II写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.贪心 5如何想到?想了几个例子,然后实际验证,想到了这个方法解题步骤只要后一天的股票价格大于前一天的价格那么就累加class Solution {public: int maxProfit(vector<int>& prices) { if(prices.size()==0)return 0; in原创 2020-08-24 11:45:33 · 99 阅读 · 0 评论 -
121. 买卖股票的最佳时机 c++
121. 买卖股票的最佳时机写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.dp 5如何想到?最大值关键词,之后的状态和之前有关解题步骤判断当前的值与之前数组内的最小值和上一个状态的比较class Solution {public: int maxProfit(vector<int>& prices) { if(prices.size()==0)return 0; int min原创 2020-08-24 11:44:46 · 96 阅读 · 0 评论 -
96.不同的二叉搜索树 c++
96.不同的二叉搜索树写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.方法 3如何想到?思路就是利用二叉搜索树的特点,对于n,假设n个节点存在二叉搜索树的种类为G(n),那么假设1为根节点,左子树根节点为0,右子树根节点为G(n-1),假设2为根节点,那么右子树根节点为G(n-2),所以推导得出G(n)=G(0)xG(n-1)…G(n-1)* G(0)解题步骤设置一个数组,已知数组的大小,通过公式求得class Solution {pub原创 2020-08-24 11:44:13 · 238 阅读 · 0 评论 -
最大子序和 c++
最大子序和写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.方法 1如何想到?包含最大,最多类字眼可能是动态规划解题步骤分解问题,从小问题到大问题,举例子从一开始入手,先从例子中找出应该的状态方程class Solution {public: int maxSubArray(vector<int>& nums) { int a=nums[0],b,temp,ans=nums[0];原创 2020-08-24 11:43:42 · 205 阅读 · 0 评论 -
20. 有效的括号 c++
20. 有效的括号写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.栈 3解题步骤将所有指定的括号放在一个unorderd_map中去,制定好对应的key-value。然后为true的情况就是能把内部的括号依次对应删除,那么就是有效的括号。为false的情况就是括号内部不对应,或者括号左右不匹配class Solution {public: bool isValid(string s) { unordered_map<原创 2020-08-24 11:43:07 · 227 阅读 · 0 评论 -
14.最长公共前缀 c++
14.最长公共前缀写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.遍历 1解题步骤将第一个赋给temp变量,然后和第二个比较。比较方法就是逐个对比,获取公共的最长长度,获得前缀长度,赋给temp变量。再与下一个比较,直至结束,若中途发现temp为空可提前结束。class Solution {public: string longestCommonPrefix(vector<string>& strs) {原创 2020-08-24 11:42:32 · 242 阅读 · 0 评论 -
剑指 Offer 38. 字符串的排列 c++
剑指 Offer 38. 字符串的排列写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.回溯+set去重 1解题步骤class Solution { unordered_set<string> st;//public: vector<string> permutation(string s) { vector<string> res; if (s.emp原创 2020-08-19 12:19:28 · 170 阅读 · 0 评论 -
剑指Offer58-II.左旋转字符串 c++
剑指Offer58-II.左旋转字符串写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.切片分为a+b,然后输出b+aclass Solution {public: string reverseLeftWords(string s, int n) { string temp; int i=0; while(i<n) temp+=s[i++]; s.erase(0,n);//eras原创 2020-08-20 17:06:47 · 192 阅读 · 0 评论 -
剑指 Offer 58 - I. 翻转单词顺序 c++
剑指 Offer 58 - I. 翻转单词顺序写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.istringstream+栈使用isstringstream输入到栈内,然后定义一个字符串class Solution {public: string reverseWords(string s) { stack<string> stk;//初始化栈 string res,str;//初始化字符串原创 2020-08-18 23:06:07 · 282 阅读 · 0 评论 -
剑指Offer05.替换空格 c++
剑指Offer05.替换空格写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.扩容+倒序遍历+双指针 3首先计算有多少个空格,然后对数组进行扩容,然后反向遍历原数组,判断是空格填入替换,不是的话填入原数组class Solution {public: string replaceSpace(string s) { int l1 = s.length() - 1;//获取字符串长度 for (int i = 0; i &原创 2020-08-18 23:05:32 · 197 阅读 · 0 评论 -
剑指Offer26.树的子结构 c++
剑指Offer26.树的子结构写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.递归和hashmap 1递归和hashmapclass Solution {public: bool isSubStructure(TreeNode* A, TreeNode* B) { bool res = false; //当TreeA和TreeB都不为零的时候,才进行比较。否则直接返回false if (A!=NULL原创 2020-08-18 23:05:07 · 115 阅读 · 0 评论 -
剑指Offer07.重建二叉树 c++
剑指Offer07.重建二叉树写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.递归和hashmap 1递归和hashmapclass Solution {private: unordered_map<int, int> index;public: TreeNode* myBuildTree(const vector<int>& preorder, const vector<int>&原创 2020-08-18 23:03:30 · 156 阅读 · 0 评论 -
236. 二叉树的最近公共祖先 c++
236. 二叉树的最近公共祖先写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.递归 2后序遍历,思路就是递归遍历,首先我们只有两种情况,一种是在同一个子树上,那么我们就返回其中的和p和q想等的那一个值,如果是不在同一子树,那么我们就返回left和right的上一子树class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode*原创 2020-08-18 23:02:36 · 175 阅读 · 0 评论 -
剑指Offer55-II.平衡二叉树 c++
剑指Offer55-II.平衡二叉树写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.深度遍历 4dfs 深度遍历,递归,由底部,后序遍历class Solution {public: bool flag=true; bool isBalanced(TreeNode* root) { dfs(root); return flag; } int dfs(TreeNode *root) {原创 2020-08-18 23:01:54 · 220 阅读 · 0 评论 -
剑指Offer32-III.从上到下打印二叉树III c++
剑指Offer32-III.从上到下打印二叉树III写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.双端队列 3双端队列 从左至右则正常从尾端放入,从前端出队,从右至左,则从前端反向放入,从后端出队class Solution {public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>>ans原创 2020-08-18 22:56:39 · 176 阅读 · 0 评论 -
154.寻找旋转排序数组中的最小值II c++实现 3种方法
154.寻找旋转排序数组中的最小值II写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1. 集合法-Set思路就是直接把这个数组放到集合里管它是不是重复,直接输出set第一个值即可,知道这样会导致时间复杂度和空间复杂度都比较高就是随便复习下集合的操作哈哈。class Solution {public: int findMin(vector<int>& nums) { set<int>ans={};//原创 2020-07-23 12:37:50 · 169 阅读 · 0 评论 -
剑指 Offer 22. 链表中倒数第k个节点 c++
剑指 Offer 22. 链表中倒数第k个节点 c++写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1. 遍历法链表类题目已经做了3个,这个尝试了下5分钟做出来了,蛮开心的整体思路就是不破坏链表求出链表总个数n,然后再从前到后遍历到n-k,返回链表即可class Solution {public: ListNode* getKthFromEnd(ListNode* head, int k) { int i=0,j=0;原创 2020-07-16 21:45:34 · 166 阅读 · 0 评论 -
剑指offer 06 反转链表
剑指offer 061. reverse 反转法正确答案class Solution {public: vector<int> reversePrint(ListNode* head) { vector<int> res; while (head){ res.push_back(head->val); head = head->next; }原创 2020-07-14 20:52:05 · 96 阅读 · 0 评论 -
206.反转链表/24(剑指offer)
206.反转链表/24(剑指offer)1. 复制傀儡法1. 双指针法正确答案class Solution {public: ListNode* reverseList(ListNode* head) { ListNode *cur=NULL,*pre=head; while (pre != NULL) { ListNode *t=pre->next; pre->next=cur;原创 2020-07-14 20:50:51 · 85 阅读 · 0 评论 -
237.删除链表中的节点/(剑指offer18)
237.删除链表中的节点/(剑指offer18)1. 替代傀儡法正确答案class Solution {public: void deleteNode(ListNode* node) { node->val = node->next->val; node->next = node->next->next; }};看答案第一次默写结果class Solution {public: void d原创 2020-07-14 20:49:43 · 84 阅读 · 0 评论