自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 LeetCode :95/96 不同的二叉搜索树 (二叉搜索树组合的个数)

参考力扣上官方的题解,采用动态规划法,关键点在于:1、状态转移公式的推导;2、边界的处理:dp[0]也初始化为1,因为+=的存在,dp除0,1之外,后面的都要初始化为0class Solution {public: int numTrees(int n) { if(n <= 1) return n; vector<int&gt...

2020-02-28 21:44:57 203

原创 LeetCode: 91 解码方法

这道题一开始以为是简单的递归问题,按照从前往后的顺序递归,总是在“10”这个输入上报错。按照从后向前的方法递归,应对短序列没有问题,但是面对长序列,因为存在大量重复计算,所以超时。如果用递归来做,应该用记忆化递归!class Solution {public: int numDecodings(string s) { //if(s == "0" || s =...

2020-02-27 23:59:08 839

原创 LeetCode:516 最长回文子序列

典型的动态规划题,可以用递归、迭代两种形式来解。首先引用一篇讲子序列问题的好文章:子序列问题通用思路|最长回文子序列以下内容引自上文:子序列问题是常见的算法问题,而且并不好解决。首先,子序列问题本身就相对子串、子数组更困难一些,因为前者是不连续的序列,而后两者是连续的,就算穷举你都不一定会,更别说求解相关的算法问题了。而且,子序列问题很可能涉及到两个字符串,比如前文「最长...

2020-02-27 22:53:08 170

原创 LeetCode:1143 最长公共子序列 583 两个字符串的删除操作

因为处理边界的不方便,自己想出了用Padding技巧来做,注意在 if 语句中 i, j 要减一class Solution {public: int longestCommonSubsequence(string text1, string text2) { int m = text1.length(), n = text2.length(); ...

2020-02-27 22:32:49 188

原创 LeetCode:5 最长回文子串

这道题与516题有一定的相似,只是一个是回文子序列,返回的是长度。一个是回文子串,返回的是字符串。一个比较好的解法汇总:动态规划、Manacher 算法一开始看了别人的思路,但是自己怎么写都不通过,后来发现原因在于:dp[i][j] = len==1 || len==2 || dp[i+1][j-1] && (s[i] == s[j]); 没有加括号,导致的后果:...

2020-02-27 17:51:36 107

原创 LeetCode 198:打家劫舍

简单的DP问题,因为状态转移方程仅仅和当前元素的前几个节点有关,因此不需要维护一个dp一维数组,和跳台阶问题一样,仅仅需要维护几个元素即可。class Solution {public: int rob(vector<int>& nums) { if(nums.empty()) return 0; int n...

2020-02-26 17:25:00 103

原创 LeetCode:300 最长上升子序列 (最优方法是:动态规划 + 二分法)

第一种简单粗暴地解法:递归求解状态转移方程,属于Up-Down方法,因为子问题的重复求解,导致时间复杂度O(2^n)一个语法点:想用全局变量,可以直接设置类的成员变量,不应该像 java 那样用 static 静态变量!这一点很容易被忽视!class Solution {private: int max; int f(vector<int>&a...

2020-02-26 16:08:37 214 1

原创 Win10/Ubuntu16.04 双系统下在Ubuntu系统安装CUDA10.1 cudnn7.6 PyTorch1.4

是一次花费了不少精力的安装,看了很多博文和经验贴,以下方法在我的笔记本上可用硬件配置:惠普暗影精灵4,GTX1060显卡一、安装cuda1.1 选择cuda版本 安装cuda之前要先确认自己的GPU是否支持cuda,安装开始我自己陷入了一个误区,以为不同型号的GPU支持的cuda版本有限,而疲于搜索1060显卡对应的cuda版本,实际上nvidia官网上列出来的支持cu...

2020-02-25 00:28:12 1207 1

原创 LeetCode:第177场周赛 1361

class Solution {public: bool validateBinaryTreeNodes(int n, vector<int>& leftChild, vector<int>& rightChild) { deque<int> q; q.push_back(0); ...

2020-02-23 15:47:16 99

原创 LeetCode:215 数组中第K大的数

class Solution {public: int findKthLargest(vector<int>& nums, int k) { if(nums.size() < k || k < 1) return -1; int left = 0, right = nums.size()-1; while(...

2020-02-22 16:36:18 222

原创 LeetCode 147:对链表进行插入排序

指针的操作比较繁琐复杂,需要捋清楚再写,中间犯了3个错误:class Solution {public: ListNode* insertionSortList(ListNode* head) { if(!head || !head->next) return head; //Bug2:不应该是nullptr,应该是head ListNod...

2020-02-22 12:20:49 153 1

原创 LeetCode:212 单词搜索Ⅱ

这道题是DFS+前缀树,是一道标准的模板题这里面的Tire类的定义写的方法与之前的208略有不同,但基本上一样。只是单独定义了一下TireNode节点类。//定义节点,类/结构体class TireNode {public: TireNode(){ } bool isEnd = false; vector<TireNode*> next...

2020-02-19 14:53:28 128

原创 LeetCode:208 实现字典树

基础的数据结构,实现方法完全可以根据思路背下来。class Trie {private: bool isEnd; Trie* next[26];public: /** Initialize your data structure here. */ Trie() { isEnd = false; memset(next, 0...

2020-02-18 13:05:29 117

原创 剑指Offer:52 正则表达式的匹配

1、递归的灵活运用,尤其是多种情况下如何递归返回2、字符串的基本性质:char* str 向后移动不能str++,必须str+13、各种情况考虑必须严谨,不然很容易漏掉一些可能通过的匹配模式,比如:(1)'*'前字符相同也可以跳过不匹配;(2)pattern为'.'时要匹配还需要此时str不为'\0'class Solution {public: bool match...

2020-02-12 12:38:56 109

原创 剑指Offer:37 二叉树的序列化

这道题是今天做的5道二叉树习题中最难的一道了,主要因为对C++/C中的几种字符串的操作不熟悉,花了很多时间理清楚语法基础:C++ 字符串与字符数组 详解/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : ...

2020-02-12 00:27:53 101

原创 剑指Offer :63 数据流中的中位数

很经典的一道题,书上的思路解析也非常好。面对这样的数据流问题,首先需要建立容器存储数据流:(1)数组、链表排序数组:插入时间复杂度为 O(n),查找为O(1);无序数组:插入时间复杂度 O(1),查找为O(n)排序链表:插入时间复杂度 O(n),查找为O(1)(2)二叉搜索树 BST平均情况下(左右子树比较平衡),插入为O(logn),查找中位数也是O(logn)最差的情...

2020-02-11 21:48:52 94

原创 LeetCode:62 二叉搜索树第K小的节点

这道题不久前在LeetCode上做过,二叉搜索树的中序遍历序列就是单调递增的。解法:递归的中序遍历,遍历到第k个节点结束递归返回;结果也作为参数列表的一部分:这是递归调用不知道如何返回结果时的一种变通的做法。注意 result 初始化为 nullptr,这样不足k个节点时,会返回nullptr。class Solution {public: TreeNode* KthNode...

2020-02-11 18:20:34 125

原创 剑指Offer:59 之字形打印二叉树

按照书上的解题思路,采用两个栈做辅助数据容器,逐层打印。And,清空vector的三种方法都可以使用,layer.clear() 最简洁。class Solution {public: vector<vector<int> > Print(TreeNode* pRoot) { vector<vector<int>&gt...

2020-02-11 12:27:59 84

原创 剑指Offer:60 分层输出二叉树

这道题是二叉树层序遍历的升级版,需要额外的两个变量存储当前层、下一层的节点数。出现的一个Bug:把判断当前层的节点数量的 if 判断放在了向队列添加当前节点左右儿子节点的前面:这样会造成,这一层加入结果 ret 后,下一层的节点数更新不正确,因为此时 next_layer 还没有更新!一个语法知识点:vector容器的清空要掌握:C++ vector清空元素的三种方法clas...

2020-02-11 11:56:13 144

原创 剑指Offer:58 判断是不是对称的二叉树

第一次自己做,思路出现了问题:对称二叉树不是一棵树的左右子节点相等,而是反转二叉树之后和原二叉树一样!class Solution {public: bool isSymmetrical(TreeNode* pRoot) { if(!pRoot) return false; bool flag = true; postorde...

2020-02-08 16:39:08 172

原创 剑指Offer:8 二叉树中序遍历的下一个节点

class Solution {public: TreeLinkNode* GetNext(TreeLinkNode* pNode) { if (!pNode) return nullptr; //节点有右子树,访问右子树的最左节点 if (pNode->right) { pNode = pNode-...

2020-02-08 13:14:05 90

原创 LeetCode 347:最高频的 K 个元素

很重点的一道题,是剑指Offer,LeetCode里面常见的另一道题:返回数组里最小/大的K个元素进阶版。同时也是海量数据处理课里讲过的一道基础题,后序还有各种进阶的在线解法。自己有思路但因为语法不够熟练,参考了讨论区的解法写的程序:涉及到了很多C++基础知识,值得好好复习。C++ STL 优先队列的应用缺点:最后是倒序输出的。class Solution {public:...

2020-02-07 15:15:52 153

原创 LeetCode 144,94,145:二叉树三种深度优先遍历

递归:class Solution {public: vector<int> preorderTraversal(TreeNode* root) { vector<int> res; if(!root) return res; preorder(root, res); return res;...

2020-02-07 11:31:52 154

原创 LeetCode 230:二叉搜索树中第K小的元素

最基础的解法:将整个二叉树中序遍历存入序列,取第k个(index = k-1)返回。如果是第k大就反向中序遍历。class Solution {public: int kthSmallest(TreeNode* root, int k) { if(!root) return 0; InorderTraversal(root); r...

2020-02-06 10:57:59 128

原创 LeetCode 250:同值子树的个数

深度优先搜索:直观上感觉是后序,但并不是严格的后序遍历Python实现:注意短路效应带来的bug,比较隐蔽class Solution: def countUnivalSubtrees(self, root: TreeNode) -> int: if root == None: return 0 self.count...

2020-02-03 11:26:24 284

原创 LeetCode 239:滑动窗口最大值

方法一:暴力法 ,时间复杂度O((n-k) * k)class Solution {public: vector<int> maxSlidingWindow(vector<int>& nums, int k) { if(nums.empty() || k<=1) return nums; vector<...

2020-02-03 00:20:35 108

原创 LeetCode 739:每日温度

解题思路有两点比较关键:1、想到用栈,而且栈中存放的是索引,而不是温度值2、打破思维桎梏,不是按顺序来计算D中每一个值的class Solution {public: vector<int> dailyTemperatures(vector<int>& T) { vector<int> D(T.size(), 0...

2020-02-02 22:37:11 119

原创 括号两题:Leet 20/22

利用栈作为辅助数据结构。注意:C++中char变量要用单引号'(' ,"("是字符串,即 char [2]class Solution {public: bool isValid(string s) { unordered_map<char, char> dict; dict.insert(pair<char, char>(...

2020-02-02 16:53:33 120

原创 LeetCode 234/9/125:回文链表,回文数,验证回文串

234:回文链表将链表存入数组再判断:Python有语法糖,不需要双指针法,直接就可以翻转比较。class Solution: def isPalindrome(self, head: ListNode) -> bool: array = [] currNode = head while currNode is not...

2020-02-02 14:58:39 111

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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