自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)

原创 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 25

原创 换硬币 c++

换硬币写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.dp如何想到?求最小值解题步骤456class Solution {public: int coinChange(vector<int> &coins, int amount) { const int INF = 0x3f3f3f3f;//定义INF为一个极大值 vector<int>dp(amount+1,INF

2020-08-24 11:46:27 38

原创 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 18

原创 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 32

原创 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 17

原创 最大子序和 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 27

原创 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 14

原创 14.最长公共前缀 c++

14.最长公共前缀写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.遍历 1解题步骤将第一个赋给temp变量,然后和第二个比较。比较方法就是逐个对比,获取公共的最长长度,获得前缀长度,赋给temp变量。再与下一个比较,直至结束,若中途发现temp为空可提前结束。class Solution {public: string longestCommonPrefix(vector<string>& strs) {

2020-08-24 11:42:32 18

原创 剑指 Offer 46. 把数字翻译成字符串 c++

剑指 Offer 46. 把数字翻译成字符串写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.动态规划解题步骤class Solution {public: int translateNum(int num) { string s=to_string(num); vector<int>ans; ans.push_back(1);//根据推算得来的,举例子 ans.pus

2020-08-24 11:35:25 14

原创 Leetcode刷题笔记模版

题目*写在前面,每一个题目都经过这样一个总结,在方法后后的数字含义时,每次重复再做一次时,给自己打分1-5,1表示完全不会,5表示顺利做完,那么在复习时便能轻松掌握自己对每种方法的熟练度1.方法 1如何想到?123解题步骤4562.方法 1如何想到?123解题步骤456时间复杂度/空间复杂度分析/面试场景如何作答面试官不同要求下的解题方式方法一时间空间复杂度时间复杂度:空间复杂度:方法二时间复杂度时间复杂度

2020-08-21 18:05:01 23

原创 剑指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 20

原创 剑指 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 20

原创 剑指 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 31

原创 剑指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 23

原创 剑指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 12

原创 剑指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 42

原创 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 57

原创 剑指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 20

原创 剑指Offer55-I.二叉树的深度 c++

剑指Offer55-I.二叉树的深度写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.迭代BFS 层序遍历class Solution {public: int maxDepth(TreeNode* root) { queue<TreeNode*>q; int n=q.size(),depth=0; if(root==NULL)return NULL; q.push(root

2020-08-18 23:01:16 34

原创 235.二叉搜索树的最近公共祖先 c++

剑指 Offer 54. 二叉搜索树的第k大节点写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.set 1使用集合,然后反向迭代class Solution {public://需要定义全局变量写在pubulic这里即可 int kthLargest(TreeNode* root, int k) { set<int>ans; Treefind(root,ans); int j=1;

2020-08-18 23:00:02 23

原创 剑指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 11

原创 剑指Offer32-II.从上到下打印二叉树 II c++

剑指Offer32-II.从上到下打印二叉树 II写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.方法 2算法思路1.在剑指offer32-1的基础上的改进2.改进的地方主要是利用一个数组来存放每一层的数据,再用一个for循环循环输入它们class Solution {public: vector<vector<int>> levelOrder(TreeNode* root) { queue<Tre

2020-08-17 17:33:23 30

原创 剑指Offer32-I.从上到下打印二叉树 c++

剑指Offer32-I.从上到下打印二叉树1.BFS 队列 层序遍历 1算法流程1.首先初始化队列和一个数组容器。2.送入头指针,看是否为空(特殊情况判断)。3.获取队列的头,打印到容器数组,首元素出队列,先输入左子树,再输入右子树class Solution {public: vector<int> levelOrder(TreeNode* root) { vector<int>ans; queue<TreeNode

2020-08-17 17:32:50 45

原创 226.翻转二叉树 c++

226.翻转二叉树写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1.递归 1前序遍历,前序是什么呢,就是根节点在最前面,根左右class Solution {public: TreeNode* invertTree(TreeNode* root) { if(root==NULL) return NULL; //终止条件 swap(root->left,root->right)

2020-08-17 17:32:16 29

原创 160相交链表 c++

160相交链表写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1. 双指针思路就是很简单下面注释class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { ListNode *a=headA; ListNode *b=headB; int i=0,j=0,gap=0,val

2020-08-17 17:31:46 42

原创 21.合并两个有序链表 c++

21.合并两个有序链表写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1. 迭代思路就是定义一个哨兵节点,然后判断l1和l2哪个小,指向小的,然后小的后移一位,class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode* preHead = new ListNode(-1);//定义一个新的节点,prehead指向它,此处保

2020-08-17 17:25:18 28

原创 剑指Offer53-I.在排序数组中查找数字I c++

剑指Offer53-I.在排序数组中查找数字I写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1. 遍历思路就是要把数字的比较转化为字符串的比较,因为明显字符越小放在前面越好,但是有种特例,例如30,3,所以我们把class Solution {public: string minNumber(vector<int>& nums) { vector<string>strs;//定义容器字符串类型

2020-08-17 17:24:00 15

原创 剑指Offer45.把数组排成最小的数 c++

剑指Offer45.把数组排成最小的数写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1. 遍历思路就是要把数字的比较转化为字符串的比较,因为明显字符越小放在前面越好,但是有种特例,例如30,3,所以我们把class Solution {public: string minNumber(vector<int>& nums) { vector<string>strs;//定义容器字符串类型

2020-08-17 17:23:25 14

原创 剑指Offer21.调整数组顺序使奇数位于偶数前面 c++

剑指Offer21.调整数组顺序使奇数位于偶数前面写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1. 遍历1.看到题目第一次解法,定义两个容器,遍历一次,分别存放偶数和奇数,清空原数组,然后拼接数组放入原数组。class Solution {public: vector<int> exchange(vector<int>& nums) { vector<int>odd; vector<in

2020-08-17 17:22:58 14

原创 剑指 Offer 66. 构建乘积数组 c++

剑指Offer66.构建乘积数组写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1. 双向遍历法1.尝试自己想没想出来于是看答案,方法是两端遍历,分为两段,但是理解错题目了,有点难受。。 int up(int j) { if(j==0||j==1) return 1; return up(j-1)*j; }//尝试自己写了一个阶乘的递归数组,发现虽然很简单,但是自己写感觉也好慢。

2020-08-17 17:22:23 17

原创 169. 多数元素 c++实现 6种方法

169.多数元素写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1. 直接法 pass思路就是找超到过一半的那个数字当然这个对于特殊构造的例子可能不友好,时间复杂度为O(n^2)class Solution {public: int majorityElement(vector<int>& nums) { int n=nums.size(); for (auto i:nums) {

2020-08-17 17:21:32 39

原创 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 16

原创 剑指Offer04. 二维数组中的查找 c++实现

剑指Offer04. 二维数组中的查找写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1. 特殊起始点法思路就是利用从左下或者右上的特殊起始点来查找数组中的数字,从这两个点开始,具有唯一性,class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { int row=matri

2020-07-22 11:32:35 40

原创 剑指 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 35

原创 剑指Offer03.数组中重复的数字 c++实现

剑指Offer03.数组中重复的数字写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点1. 使用集合思路就是利用集合不能有重复数字的这个特性,把数组中的元素依次送入集合当中,判断一下这个元素是否被送入,如果已经被送入,那么返回该值,这样得到的是第一个重复的元素class Solution {public: int findRepeatNumber(vector<int>& nums) { set<int>

2020-07-16 21:43:25 31

原创 剑指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 12

原创 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 27

原创 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 26

原创 莫烦-一个简单的神经网络例子 中文注释

莫烦例子全中文向详细注释from __future__ import print_function #使用print就得像python3.X那样加括号使用。python2.X中print不需要括import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt #风格与MATLAB类似,可以方便的绘制图像、展示结...

2019-07-17 17:18:02 148

空空如也

空空如也

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