摘要: 首先要明白二叉搜索树如果按照中序遍历存放在数组就是呈现递增的形式。 所以该题的框架一定是基于中序遍历的形式。 但我最开始写的时候忽略了一个点, if(root->left->val>=root->val){return false;} if(root->right->val<=root->val){ 阅读全文
posted @ 2024-01-16 23:25 yun-che 阅读(16) 评论(0) 推荐(0)
摘要: 整体来看,二叉树的递归代码,可以分为终止条件,单层递归逻辑。 单层递归逻辑就是所谓的根左右那三种,选哪一种也是有讲究的, 如果不需要对根节点进行处理,那三种都可以。 如果题目侧重与由子节点推到父节点,就采用后序遍历。 如果题目侧重与由父节点推到子节点,就采用前序遍历。 终止条件怎么写? 就当作只有三 阅读全文
posted @ 2024-01-16 18:39 yun-che 阅读(12) 评论(0) 推荐(0)
摘要: 如何知道这一题需要用回溯呢? 回溯就像试触,如果不符合条件,就往回缩,但是这种缩,不是回到起点,而是回到上一步。 所以题目像二叉树路径,这样需要不断的试触并且要记录之前的路径信息的,就要用到回溯。 关于回溯如何用,有一些关键点。 有递归就有回溯, 单层递归中有加就有减,(这个加减要广义的理解,加就是 阅读全文
posted @ 2024-01-16 18:18 yun-che 阅读(48) 评论(0) 推荐(0)
摘要: 最简单的就是前序遍历,每次将栈顶元素插入数组中。 但要注意由于栈的性质,先push右节点再push左节点。 点击查看代码 class Solution { public: vector<int> preorderTraversal(TreeNode* root) { vector<int>v; st 阅读全文
posted @ 2024-01-15 12:15 yun-che 阅读(23) 评论(0) 推荐(0)
摘要: 关于暴力法简单说一点,我是用链表进行比较排序的,但是有一个细节要注意。 点击查看代码 struct node{ int val; int count; node*next; node(int val,int count):val(val),count(count),next(nullptr){} } 阅读全文
posted @ 2024-01-15 08:45 yun-che 阅读(15) 评论(0) 推荐(0)
摘要: 最开始做的时候,暴力解法结果不管怎么剪枝,还是超时了。 后来看到了卡哥的方法,学到了单调队列,其实就是自定义队列。用deque来实现。 有三个关键点:pop,push,front. pop,如果遍历的元素等于队头元素,则头删。 push,把比遍历元素小的都进行尾部删。 front,就是普通的查找队头 阅读全文
posted @ 2024-01-14 22:00 yun-che 阅读(13) 评论(0) 推荐(0)
摘要: 主要采用的是库函数的方法,isdigit,stoi. isdigit可以判断单个字符是否是数字,stoi可以将多个字符(多位数,复数)转换成数字。 判断数字可以结合isdigit给出对应的函数。 点击查看代码 bool isNumber(const std::string& token) { // 阅读全文
posted @ 2024-01-14 17:01 yun-che 阅读(80) 评论(0) 推荐(0)
摘要: 最开始想的是暴力解法,但总是超时,后来问了chatgp,可以通过用substr来缩短时间。勉强通过,耗时还是很大。 点击查看代码 class Solution { public: bool repeatedSubstringPattern(string s) { int count=1; strin 阅读全文
posted @ 2024-01-14 10:54 yun-che 阅读(22) 评论(0) 推荐(0)
摘要: 首先有两步,1求next数组,2进行比对。 我这种是数组后移的方法,即第一个数是-1。 步骤就是如果前后缀不相等,j就要后撤,要后撤因此要有范围。j>=0; 如果相等就j++; 每一次循环求出对应的next[i]。 要注意的点是因为我这是数组后移的方法,因此比较用next[j+1]比较。 2比对跟求 阅读全文
posted @ 2024-01-14 09:00 yun-che 阅读(22) 评论(0) 推荐(0)
摘要: 最开始我是用笨方法解决的,就是新建了一个字符串,不断增加限制条件来实现的。 点击查看代码 class Solution { public: string reverseWords(string s) { string temp; string cnt; int sz=s.size();int j=0 阅读全文
posted @ 2024-01-13 22:26 yun-che 阅读(16) 评论(0) 推荐(0)