12 2021 档案
摘要:很简单的思路,获取负数字符串“+”所在的位置,然后前面就是正数部分,后面就是负数部分 储存在数组中,然后进行计算 查看代码 class Solution: def complexNumberMultiply(self, num1: str, num2: str) -> str: s="" place
阅读全文
摘要:这次看了并查集,但是我并没有实现,第一次接触并不想写 然后copy了一个同学深度遍历的代码,很好理解,将创建一个二维的字典(就暂且这么叫吧),然后 将各个字符串之间的关系储存在其中,最后深度遍历一遍利用x/y=i , y/z = j, 则x/z = i*j 还有数据结构创建方式 defaultdic
阅读全文
摘要:看见这个头疼,直接想到了编译原理的内容,后面看了答案,字符串头疼,下次注意了,这次记忆了 但是c++的字符串处理,我一直没有记住,不去记忆就记不住 stoi(string) 将字符串转化为int stack的函数 pop() top() push() empty() string + ,* , le
阅读全文
摘要:二叉树+动态规划就不会了,把代码保存一下 查看代码 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() :
阅读全文
摘要:O(nm)直接超时,虽然也是动态规划 查看代码 class Solution { public: int coinChange(vector<int>& coins, int amount) { if(amount == 0){ return 0; } vector<int>temp(amount+
阅读全文
摘要:300. 最长递增子序列 一开始想的是深度遍历加剪枝,然后就时间超时了,判断能否加入最长递增子序列,代码如下: 查看代码 class Solution { public: int lengthOfLIS(vector<int>& nums) { int result = 0; int minn =
阅读全文
摘要:首先练习一下python,使用collection的Counter 查看代码 class Solution: def findDuplicate(self, nums: List[int]) -> int: a=Counter(nums) for i in a: if a[i] >= 2: retu
阅读全文
摘要:这道题没有什么思路,以为是背包问题,但是一直不会,看了答案是动态规划 看了答案自己码了一遍 int minn一定要记得赋值,int的最值 最大INT_MAX 最小INT_MIN 查看代码 class Solution { public: int numSquares(int n) { vector<
阅读全文
摘要:看见一个比较不错的评论 查看代码 class Solution { public: vector<int> productExceptSelf(vector<int>& nums) { int n=nums.size(); int left=1,right=1; //left:从左边累乘,right
阅读全文
摘要:unordered_set哈希集合确实好像速度慢,还是我自己的问题 一遍遍历找到p结点的所有祖先,然后再后序遍历q结点的祖先 查看代码 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode
阅读全文
摘要:这是我动态规划,然后没有找到最优子结构,每次继承左上的flag,然后查看该位置上面和左方是否为‘1’, 比较字符,刚开始我 == 1直接爆炸,最后一个用例我就不想继续了,以后再说吧 最后破案了,flag赋值时使用==,没有使用=,炸裂。 查看代码 class Solution { public: i
阅读全文
摘要:首先,我看见这种偏数据结构题自动带一点恐惧,这次还是不会写 这是一个树,每个结点有26个子结点,前缀不存在则为空,然后标记结束位置 使用vector+指针创造树 然后就是构造函数,vector调用自己的构造函数,差点看懵了 Trie():children(26),isEnd(false){} 查看代
阅读全文
摘要:不想写了,知道是拓扑排序,但是思考了半天不会写,写成下面这个样子 主要是不知道用一个数组记录状态,最近老是想着节省空间, 好像误入歧途了 查看代码 class Solution { public: bool canFinish(int numCourses, vector<vector<int>>&
阅读全文
摘要:很基本的减枝吧 查看代码 class Solution { public: int numIslands(vector<vector<char>>& grid) { vector<vector<int>>flag(grid.size(),vector<int>(grid[0].size(),0));
阅读全文
摘要:这应该又是动态规划题目,在找敢感觉了,f(x)=max(f(x-1),f(x-2)+num[i]),其实在写的时候想到状态方程跨越四个元素 但是想想,先写写看吧,毕竟能运行就好,果然 下面代码加上一句 a[1] = max(nums[0],nums[1]);便正确了,哈哈哈 查看代码 class S
阅读全文
摘要:又是一次失败的思路,这是因为我想到了用动态规划,但是我的动态规划很拉 答案的动态规划 但是我又分析了一下,因为都是整数,负数个数为偶数则全部相乘,因为为整数,为正就只管乘了,为奇则只乘两端负数其中一个 我想到了最大连续加,是找到只要没有小于0就继续加,就还有价值,记录最大值即可。这是只要一直乘,最后
阅读全文
摘要:我希望我刷题的目的是提升自己,不是为了ac 这个题目没有写出来,因为不知道链表归并排序的好处 我于是尝试了如何使用map,自动排序嘛 学会了 插入insert(pair<int,int>(x,y)) 以及如何弹出第一个,以为是红黑树底层,遍历需要注意 map是一个不重复key值,所以我没通过: 贴一
阅读全文
摘要:这是快慢指针,感觉做过就没做,但我估计我不看答案,快慢指针我要折腾死, 因为如何返回环的开始确实需要一点思考 之前没用过哈希表,这次就用一下,感受一下吧 查看代码 /** * Definition for singly-linked list. * struct ListNode { * int v
阅读全文
摘要:自己的错误代码,没有看出来动态规划,虽然知道暴力不行,很简单的动态规划,然后自己还是被用例打败,最后其实还是学到了 又因为字符串拼接与截取 查看代码 class Solution { public: bool wordBreak(string s, vector<string>& wordDict)
阅读全文
摘要:这次比较有成就感,排序之后就没什么了 class Solution { public: int longestConsecutive(vector<int>& nums) { if(nums.empty()){ return 0; } sort(nums.begin(),nums.end()); i
阅读全文
摘要:很朴素的做法,有右子树就压入栈,然后处理左子树,如果左子树没有了,便取出栈中子树进行处理 class Solution { public: void flatten(TreeNode* root) { stack<TreeNode*>s; TreeNode* temp = root; if(root
阅读全文
摘要:今天依然是二叉树,怀疑人生的一天,会画二叉树,但是用代码就不会,感叹智商 看了很多遍题解这才终于搞明白,以后画图预演一定好好总结规律再写代码 class Solution { public: TreeNode* buildTree(vector<int>& preorder, vector<int>
阅读全文
摘要:这是第一次自己写层次遍历,花了半个小时吧,有很多不足 例如我对于队列每一层的循环,就显得一点智慧没有 class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<int>temp_val; vect
阅读全文
摘要:这是卡塔兰数 的经典应用吧,数学不好 二叉搜索树的个数, class Solution { public: int numTrees(int n) { int result; vector<int>a(n+1,0); a[0] =1; a[1] =1; for(int i =2 ; i<= n; i
阅读全文
摘要:### 中序遍历。利用二叉搜索树性质,将其中序遍历,再判断 ### 代码 class Solution { public: bool isValidBST(TreeNode* root) { vector<int>a; stack<TreeNode*> s; TreeNode* temp = roo
阅读全文

浙公网安备 33010602011771号