数据结构与算法
文章平均质量分 54
1
lucifer80861
mmmmmmmmmmmm
展开
-
2022-05-21Leetcode856-543-692-1091-21-18-16-172-28-151-223
856模拟参考https://leetcode.cn/problems/score-of-parentheses/solution/gua-hao-de-fen-shu-by-leetcode/475577class Solution {public: int scoreOfParentheses(string s) { int n=s.size(); stack<int> st; for(int i=0; i<n; ++i)原创 2022-05-29 13:58:55 · 829 阅读 · 0 评论 -
2022-04-19链表+岛屿系列+迷宫系列+拓扑排序
704. 二分查找class Solution {public: int biSearch(vector<int>& nums, int target, int left, int right){ if(left>right) return -1; int mid=(left+right)/2; if(nums[mid]==target) return mid; else if(target<nums原创 2022-04-23 11:03:07 · 207 阅读 · 0 评论 -
2022-04-16老张修路360笔试-prim构建最小生成树
prim算法构建最小生成树,返回最小权重和原创 2022-04-16 17:37:52 · 4175 阅读 · 0 评论 -
2022-04-08美团笔试练题
两个字符串,忽略顺序,是否相同,即是否包含相同的字符,对应字符的数量也相同"hello"和"olleh"相同。思路:位运算,0异或0=0,0异或1=1,所以ans初始化为0,任何数和自己异或结果为0,这样用0异或两个字符串的每个字符就可。O(n) bool match(string str1, string str2) { int n = str1.size(); int n2 = str2.size(); if (n != n2) return原创 2022-04-08 18:07:47 · 2410 阅读 · 2 评论 -
2022-03-17剑指59-68
面试题63class Solution {public: int maxProfit(vector<int>& prices) { // write code here if(prices.size()==0) return 0; int buyMin=prices[0]; int ans=0; for(int i=0; i<prices.size(); ++i){原创 2022-03-26 04:17:09 · 1464 阅读 · 0 评论 -
2022-03-15剑指47-58
面试题47简单dpclass Solution {public: int maxValue(vector<vector<int> >& grid) { // write code here int m=grid.size(); int n=grid[0].size(); vector<vector<int>> dp(m+1, vector<int>(n+1, 0)原创 2022-03-23 06:37:10 · 105 阅读 · 0 评论 -
2022-03-14剑指37-46
面试题37这题演示是层序,但是功能要求是只要实现序列化和反序列化就可,所以题解的前序是可行的。DFSclass Codec {public: // Encodes a tree to a single string. void rserialize(TreeNode* root, string &s){ if(root==nullptr) s+="#,";//用#不用null,1个字符好处理点 else{ s += (原创 2022-03-16 02:11:08 · 205 阅读 · 0 评论 -
2022-03-06剑指29-36
面试题29题解链接不用算法,直接模拟。class Solution {public: vector<int> printMatrix(vector<vector<int> > matrix) { vector<int> ans; int l=0, r=matrix[0].size()-1, t=0, b=matrix.size()-1; while(true){ for(i原创 2022-03-09 23:31:31 · 130 阅读 · 0 评论 -
2022-03-09Leetcode训练营_哈希表
LC217存在重复元素class Solution {public: bool containsDuplicate(vector<int>& nums) { unordered_set<int> s; for(auto num:nums){ if(s.count(num)){ return true; break; }原创 2022-03-09 04:42:21 · 123 阅读 · 0 评论 -
2022-03-07Leetcode训练营_分治
目录LC169多数元素LC105从前序与中序遍历序列构造二叉树LC169多数元素哈希,实间O(N),空间O(N)class Solution {public: int majorityElement(vector<int>& nums) { unordered_map<int, int> s; int f=0;//最多的出现次数 int ans; for(auto num:nums){原创 2022-03-09 01:12:03 · 983 阅读 · 0 评论 -
2022-03-04剑指22-28
目录面试题22面试题23面试题24面试题25面试题26面试题27面试题28知识面试题22注意两个特殊输入,pHead为空,k==0还有要提前返回空的,链表长度不足k的情况class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param pHead ListNode类 * @param k int整型 * @return ListNo原创 2022-03-05 02:58:36 · 66 阅读 · 0 评论 -
2022-02-12剑指15-21(位运算)
目录面试题15面试题16知识点面试题15牛客网链接思路1:书中常规解法class Solution {public: int NumberOf1(int n) { int count=0; int flag=1; while(flag){ if (n & flag){ ++count; } flag = flag&原创 2022-03-04 15:23:00 · 466 阅读 · 0 评论 -
2022-03-03Leetcode训练营_排序
目录天池训练营链接有序数组的平方数组的相对排序对链表进行插入排序合并两个有序数组知识天池训练营链接天池leetcode训练营有序数组的平方双指针,时间O(n),空间O(n)但是太慢了class Solution {public: vector<int> sortedSquares(vector<int>& nums) { //双指针插入,一个在头,一个在尾部 vector<int> v; int原创 2022-03-03 22:44:05 · 8075 阅读 · 0 评论 -
2022-03-01Leetcode训练营_搜索
目录天池训练营链接对称二叉树二叉树的中序遍历二叉搜索树中第K小的元素二分查找天池训练营链接天池leetcode训练营对称二叉树1.递归/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr)原创 2022-03-02 16:04:10 · 7552 阅读 · 0 评论 -
2022-02-25Leetcode训练营_位运算
目录天池训练营链接2的幂只出现一次的数字知识天池训练营链接天池leetcode训练营2的幂题解链接有符号整数,最大的2的幂是2^30 ,所以只需判断是不是2^30的因子。class Solution {public: bool isPowerOfTwo(int n) { int BIG= 1<<30; return n>0 && BIG%n==0; }};n&(n-1)能去掉二进制最低位的1,n&a原创 2022-03-01 01:41:51 · 180 阅读 · 0 评论 -
2022-02-27Leetcode训练营_双指针
天池训练营链接天池leetcode训练营删除链表中的重复元素/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, Lis原创 2022-02-28 22:29:12 · 232 阅读 · 0 评论 -
2022-02-17Leetcode训练营_链表
目录天池训练营链接移除链表元素旋转链表合并两个有序链表相交链表天池训练营链接天池leetcode训练营移除链表元素/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {原创 2022-02-25 04:49:21 · 483 阅读 · 0 评论 -
2022-02-19Leetcode训练营_栈
目录天池训练营链接最小栈【比较含退格的字符串基本计算器II知识天池训练营链接天池leetcode训练营最小栈【参考题解建辅助栈,push的时候存储对应时间当前栈的最小值。class MinStack { stack<int> s; stack<int> min_s;public: MinStack() { min_s.push(INT_MAX); //push操作里面要比较 } void原创 2022-02-25 02:19:23 · 6590 阅读 · 0 评论 -
2022-02-21Leetcode训练营_字符串
目录天池训练营链接验证回文字符串 Ⅱ知识天池训练营链接天池leetcode训练营验证回文字符串 Ⅱ时间复杂度O(n),空间O(1)class Solution {public: int flag = 0;//删除有没有用过 bool validPalindrome(string s) { int n=s.size(); int first=0,last=n-1; //if(n==1 || n==2){原创 2022-02-24 01:41:57 · 73 阅读 · 0 评论 -
2022-02-23Leetcode训练营_树
目录天池训练营链接二叉树的最小深度路径总和二叉搜索树迭代器天池训练营链接天池leetcode训练营二叉树的最小深度递归就可/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} *原创 2022-02-24 00:39:31 · 439 阅读 · 0 评论 -
2022-02-14Leetcode训练营_数组(双指针)
目录天池训练营链接三数之和暴力3层循环+去重1双指针移除元素删除有序数组中的重复项天池训练营链接天池leetcode训练营三数之和链接摘自题解:「不重复」的本质是什么?我们保持三重循环的大框架不变,只需要保证:第二重循环枚举到的元素不小于当前第一重循环枚举到的元素;第三重循环枚举到的元素不小于当前第二重循环枚举到的元素。也就是说,我们枚举的三元组(a,b,c) 满足 a<=b<=c,保证了只有 (a,b,c)这个顺序会被枚举到,而(b,a,c) 、(c,b,a) 等等这些不原创 2022-02-14 18:44:57 · 367 阅读 · 0 评论 -
2021-09-13剑指10-14
目录面试题10面试题10斐波那契数列,这题难度低,重点在于分析时间复杂度,以f(10)为例,画树状图。1.递归2.循环,避免重复计算时间O(n),空间O(1),做表就是O(n)class Solution {public: int Fibonacci(int n) { vector<int> v={0,1}; if(n<2) return v[n]; int f1 = 0; int原创 2022-02-12 15:32:41 · 465 阅读 · 0 评论 -
2021-09-07剑指03-09
对每个好用的题解,理解其中数据结构及其用法(查出来),然后自己背下来。读一遍题解,然后迅速自己扒出来,不对再核对一下修改之!加速迭代过程!而不是在1题上耽误太久。意义不大的代码题就先略了。这也是加速迭代的一部分。尤其这种字符串题,已经解决了还要作妖。。手写堆排序、建立链表节点、二叉树结点可以后面再背一下,剑指弄完了再背是可行的。先把主体搞定再做补充。另外,剑指部分可能可以再刷快一点。目录面试题3题目1:面试题4面试题5面试题6面试题3题目1:牛客网链接思路:1.先排序,再扫描,O(nlog原创 2021-09-13 15:43:07 · 51 阅读 · 0 评论 -
数据结构与算法(上)线性表
1 约瑟夫问题(Monkey king election)描述 有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。输入输入包含两个整数,第一个是n,第二个是m 1 输出输出包含一行,即最后原创 2017-06-27 08:46:24 · 280 阅读 · 0 评论