
LeetCode
俺叫西西弗斯
找份前端开发工作
都柏林理工大学博士拟录取(没钱读)
李莫瑞克大学硕士在读(主持爱尔兰软件研究中心)
重庆2022优秀毕业生
展开
-
[LeetCode]剑指 Offer 55 - I. 二叉树的深度
算法标签 DFS,树题目简叙思路 3(3) / \ 9(2) 20(2) / \ 15(1) 7(1)递归到底部,记录并回溯检查最高高度代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int原创 2020-08-03 01:36:49 · 190 阅读 · 0 评论 -
[LeetCode]剑指 Offer 58 - II. 左旋转字符串
算法标签 字符串题目简叙代码拼接class Solution {public: string reverseLeftWords(string s, int n) { string res; for(int i=n;i<s.size();i++)res+=s[i]; for(int i=0;i<n;i++)res+=s[i]; return res; }};三次翻转abc原创 2020-08-03 01:10:58 · 195 阅读 · 0 评论 -
[LeetCode]剑指 Offer 22. 链表中倒数第k个节点
算法标签:链表,快慢指针题目简叙思路快慢指针,快指针走i,慢指针走size-i,刚好就是对应的倒数第i个代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode原创 2020-08-03 00:18:09 · 142 阅读 · 0 评论 -
[LeetCode]114. 二叉树展开为链表
算法标签:链表题目简叙代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), righ原创 2020-08-02 23:35:30 · 181 阅读 · 0 评论 -
[LeetCode]剑指 Offer 06. 从尾到头打印链表
算法标签 链表题目简叙思路代码递归回溯/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: vector<int>res; vector<int>原创 2020-07-29 21:01:41 · 136 阅读 · 1 评论 -
[LeetCode]剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
算法标签 双指针题目简叙思路前后指针使用指针判断奇数偶数,再进行交换有点类似于快速排序中哨兵探路的思路快慢指针fast一直走 遇到吻合的数就和low交换 low++到下一个数去代码前后指针class Solution {public: vector<int> exchange(vector<int>& nums) { ios::sync_with_stdio(false); int l=0,r=原创 2020-07-28 22:31:07 · 146 阅读 · 0 评论 -
[LeetCode]剑指 Offer 39. 数组中出现次数超过一半的数字
算法标签 哈希 排序 摩尔投票法题目简叙思路假设众数假设当前初始值是众数如果当前值与众数值相同,那么就票数+1如果当前值与众数值不同,那么就票数-1如果当前票数为0,那么就证明当前值不是众数,于是我们假定下一个数是众数,重复进行尝试代码哈希 没什么好说的class Solution {public: int majorityElement(vector<int>& nums) { unordered_map<int,int>mp原创 2020-07-28 21:34:26 · 193 阅读 · 0 评论 -
[LeetCode]剑指 Offer 56 - II. 数组中数字出现的次数 II
算法标签:哈希题目简叙思路哈希表代码class Solution {public:剑指 Offer 56 - II. 数组中数字出现的次数 II int singleNumber(vector<int>& nums) { unordered_map<int,int>mp; for(int it:nums)mp[it]++; for(int i=0;i<nums.size();i++)原创 2020-07-28 17:50:27 · 186 阅读 · 0 评论 -
[LeetCode]剑指 Offer 57. 和为s的两个数字
算法标签:双指针 二分题目简叙思路遍历加二分用来勉强加速n*logn双指针 左右指针往中间逼近 没什么好说o(n)代码class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int>ans; for(int i=0;i<nums.size();i++){//遍历第一个值原创 2020-07-28 01:21:43 · 124 阅读 · 0 评论 -
[LeetCode]剑指 Offer 53 - II. 0~n-1中缺失的数字
算法标签:哈希 二分题目简叙思路没什么好说的全都只有一个没在,那直接哈希走起来代码class Solution {public: int missingNumber(vector<int>& nums) { vector<int>arr(nums.size()+1); for(auto it:nums)arr[it]++; int res=0; for(int i=0;i<arr.原创 2020-07-28 00:38:11 · 174 阅读 · 0 评论 -
[LeetCode]剑指 Offer 17. 打印从1到最大的n位数
算法标签 大数处理题目思路主要是机考得话不会遇到大数处理的问题代码class Solution {public: vector<int> printNumbers(int n) { int newN = pow(10,n); vector<int>res; for(int i=1;i<newN;i++) res.push_back(i); return res; }};AC记录原创 2020-07-27 22:02:00 · 147 阅读 · 0 评论 -
[LeetCode]剑指 Offer 63. 股票的最大利润
算法标签 DP题目简叙思路维护一个当前与最小值的差值,维护一个最小值DP直接走过去代码class Solution {public: int maxProfit(vector<int>& prices) { if(prices.size()==0)return 0; int min_price=prices[0],max_price=0; for(int i=0;i<prices.size();i++){原创 2020-07-27 18:51:08 · 182 阅读 · 0 评论 -
[LeetCode]剑指 Offer 47. 礼物的最大价值
算法标签 DP题目简叙思路没什么好说的特判断 沿边和起始情况核心状态转移方程只有一行grid[i][j]+=max(grid[i-1][j],grid[i][j-1]);代码class Solution {public: int maxValue(vector<vector<int>>& grid) { int n=grid.size(),m=grid[0].size(); for(int i=0;i<n;i++原创 2020-07-27 18:29:35 · 186 阅读 · 0 评论 -
[LeetCode]392. 判断子序列
算法标签 双指针题目简叙代码class Solution {public: bool isSubsequence(string s, string t) { int l=0,r=0; while(l<s.size()&&r<t.size){ if(s[l]==t[r])l++; r++; } return l==s.size(); }};原创 2020-07-27 18:20:02 · 152 阅读 · 0 评论 -
[LeetCode]剑指 Offer 64. 求1+2+…+n
算法标签题目简叙class Solution {public: int sumNums(int n) { return n==0?0:n+sumNums(n-1); }};短路性质a&&bif a == false then break;如果a为假则不执行bclass Solution {public: int sumNums(int n) { n && (n+=sumNums(n-1));原创 2020-07-26 13:52:54 · 187 阅读 · 0 评论 -
[LeetCode]剑指 Offer 10- I. 斐波那契数列
算法标签 DP 位运算题目简叙思路代码动态规划class Solution {public: int fib(int n) { vector<int>arr(n+10,0); arr[1]=1; for(int i=2;i<=n;i++){ arr[i]=(arr[i-1]+arr[i-2])%(1000000000+7); } return arr[n];原创 2020-07-26 13:27:07 · 264 阅读 · 0 评论 -
[LeetCode]剑指 Offer 04. 二维数组中的查找
算法标签 双指针题目简叙思路线行查找的思路一行从左到右递增一列从上到下递增那么我们依据性质 从第0行的最右侧开始就检查如果目标值比这个值大,那么就到下一行如果目标值比这个值小,那么久到前一个代码暴力class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { if(matrix.size()==0||mat原创 2020-07-26 12:57:05 · 182 阅读 · 0 评论 -
[LeetCode]剑指 Offer 42. 连续子数组的最大和
算法标签 DP题目思路一维DP原则就是查看是否添加上一个数字正常而言只有左侧数字为整数就添加否则就舍弃,自身作为新的一段测试用例 [-2,1,-3,4,-1,2,1,-5,4]标准输出 -2 1 -2 4 3 5 6 1 5 代码class Solution {public: int maxSubArray(vector<int>& nums) { int res=-0x3f3f3f; for(int i=1;i<原创 2020-07-24 17:05:20 · 118 阅读 · 0 评论 -
[LeetCode]剑指 Offer 50. 第一个只出现一次的字符
算法标签 哈希表题目简叙思路哈希表统计代码class Solution {public: map<char,int>mp; char firstUniqChar(string s) { for(auto x:s)mp[x]++; string ans= " "; for(auto it:s) if(mp[it]==1){ ans=it;原创 2020-07-24 16:35:34 · 179 阅读 · 0 评论 -
[LeetCode]1025. 除数博弈
算法标签 博弈题目简叙思路N=1 的时候,区间 (0, 1) 中没有整数是 n 的因数,所以此时 Alice 败。N=2 的时候,Alice 只能拿 1,N 变成 1,Bob 无法继续操作,故 Alice 胜。N=3 的时候,Alice 只能拿 1,N 变成 2,根据 N=2 的结论,我们知道此时 Bob 会获胜,Alice 败。N=4 的时候,Alice 能拿 1 或 2,如果 Alice 拿 1,根据 N = 3 的结论,Bob 会失败,Alice 会获胜。N=5 的时候,Alice 只原创 2020-07-24 12:56:55 · 191 阅读 · 0 评论 -
[LeetCode]剑指 Offer 03. 数组中重复的数字
算法标签 哈希表题目简叙思路代码使用哈希mapclass Solution {public: int findRepeatNumber(vector<int>& nums) { map<int,int>mp; for(auto it:nums)mp[it]++; int ans=0; for(auto it:mp)if(it.second>1){ans=it.first;break;}原创 2020-07-23 23:58:45 · 726 阅读 · 0 评论 -
[LeetCode]1207. 独一无二的出现次数
算法标签 哈希表题目简叙思路用map来记录值键对 这个时候 it::map it.second记录的是不同的数值总共出现了几次用set计算map存储的数值 如果second 重复了,就代表不是独一无二,否则就继续插入下一个代码class Solution {public: bool uniqueOccurrences(vector<int>& arr) { map<int,int>mp; set<int>st原创 2020-07-23 23:41:23 · 220 阅读 · 0 评论 -
[LeetCode]64. 最小路径和
算法标签 DP题目简叙思路典型DP数值累加状态转移方程如下:当前位置所处的 行与列 处于为边界时候: 当前的值即为 自身本身 当前位置所处的 行 处于为边界时候: 当前的值即为 上方 的累加当前位置所处的 列 处于为边界时候: 当前的值即为 左方 的累加当都不属于的时候 当前的值即为 上方和左方最小值 的累加代码class Solution {public: int minPathSum(vector<vector<int>>&原创 2020-07-23 23:06:11 · 177 阅读 · 0 评论 -
[LeetCode]剑指 Offer 15. 二进制中1的个数
算法标签 位运算题目简介思路直接>>1挪位 &1检测末尾代码class Solution {public: int hammingWeight(uint32_t n) { int res=0; while(n){ res+= n&1?1:0,n>>=1; } return res; }};AC记录...原创 2020-07-22 13:44:49 · 158 阅读 · 0 评论 -
[LeetCode]804. 唯一摩尔斯密码词
算法标签 ascii题目简叙思路用ascii和下标解决映射密码关系,然后用set集合来去重即可代码class Solution {public: int uniqueMorseRepresentations(vector<string>& words) { vector<string> str={".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..原创 2020-07-22 13:32:51 · 207 阅读 · 0 评论 -
[LeetCode]剑指 Offer 11. 旋转数组的最小数字
算法标签 二分题目简叙思路二分最优但是这个二分我有点懵,标准板子似乎失效代码class Solution {public: int minArray(vector<int>& numbers) { int res=0x3f3f3f; for(auto x:numbers)res=min(res,x); return res; }};class Solution {public:原创 2020-07-22 13:05:04 · 127 阅读 · 0 评论 -
[LeetCode]620. 有趣的电影
题目简叙思路select … from … 选择where … 限定order by … desc 逆序排序代码# Write your MySQL query statement belowselect * from cinema where description != 'boring' and id%2!=0 order by rating desc原创 2020-07-21 10:56:36 · 275 阅读 · 0 评论 -
[LeetCode]面试题 01.01. 判定字符是否唯一
题目简叙思路哈希class Solution {public: bool isUnique(string astr) { vector<int> arr(26,0); for(auto x:astr)arr[x-'a']++; for(auto x:arr)if(x>1)return false; return true; }};setclass Solution {public:原创 2020-07-21 10:49:30 · 207 阅读 · 0 评论 -
[LeetCode]1143. 最长公共子序列
算法标签:动态规划题目简叙代码class Solution {public: int longestCommonSubsequence(string text1, string text2) { int strLen1=text1.size(),strLen2=text2.size(); vector<vector<int>>dp(strLen1+1,vector<int>(strLen2+1,0));原创 2020-07-20 18:00:21 · 150 阅读 · 0 评论 -
[LeetCode]657. 机器人能否返回原点
相关标签 字符串题目简叙思路只看是否可以抵消代码class Solution {public: bool judgeCircle(string moves) { int x=0,y=0; for(int i=0;i<moves.size();i++) { if(moves[i]=='U')y++; else if(moves[i]=='D')y--; else原创 2020-07-20 14:33:55 · 96 阅读 · 0 评论 -
[LeetCode]461. 汉明距离
算法标签 位运算题目简叙思路32位检测是否末尾是否是1代码class Solution {public: int hammingDistance(int x, int y) { int res=0; for(int i=0;i<32;i++){ if((x>>i&1)!=(y>>i&1))res++; } return res; }};AC原创 2020-07-20 14:25:23 · 160 阅读 · 0 评论 -
[LeetCode]167. 两数之和 II - 输入有序数组
算法标签 双指针题目简叙思路使用双指针达到0(n)代码class Solution {public: vector<int> twoSum(vector<int>& numbers, int target) { int l=0,r=numbers.size()-1; while(l<=r){ int mid = numbers[l]+numbers[r]; if(mid原创 2020-07-20 14:11:58 · 146 阅读 · 0 评论 -
[LeetCode]27. 移除元素
算法标签题目简叙思路因为是引用 所以只返回指定长度的部分所以我们直接返回覆盖掉的前ans长度的部分代码class Solution {public: int removeElement(vector<int>& nums, int val) { int ans=0; for(int x:nums) if(x!=val) nums[ans++]=x; retu原创 2020-07-19 22:38:37 · 80 阅读 · 0 评论 -
[LeetCode]258. 各位相加
算法标签题目简叙思路代码class Solution {public: int addDigits(int num) { string s; s = to_string(num); while(s.size()!=1){ int tmpn=0; for(auto x:s)tmpn+=(x-'0'); s = to_string(tmpn); }原创 2020-07-19 22:35:27 · 82 阅读 · 0 评论 -
[LeetCode]258. 各位相加
算法标签题目简叙思路代码class Solution {public: int addDigits(int num) { string s; s = to_string(num); while(s.size()!=1){ int tmpn=0; for(auto x:s)tmpn+=(x-'0'); s = to_string(tmpn); }原创 2020-07-19 22:29:39 · 77 阅读 · 0 评论 -
[LeetCode]191. 位1的个数
算法标签 位运算 汉明重量题目简叙思路位运算现存的值直接循环右移,检测二进制状态下各个位的值是0还是1代码class Solution {public: int hammingWeight(uint32_t n) { int res=0; int str = (int)n; for(int i=0;i<32;i++)if(str>>i&1==1)res++; return r原创 2020-07-19 22:26:25 · 136 阅读 · 0 评论 -
[LeetCode]剑指 Offer 05. 替换空格
算法标签题目简叙class Solution {public: string replaceSpace(string s) { string res; for(auto x:s)if(x==' ')res+="%20";else res+=x; return res; }};思路代码class Solution {public: string replaceSpace(string s) { stri原创 2020-07-19 22:22:17 · 152 阅读 · 0 评论 -
[LeetCode]1295. 统计位数为偶数的数字
算法标签题目简叙思路转换为Stirng方便操作代码class Solution {public: int findNumbers(vector<int>& nums) { int res=0; string str; for(int i:nums){ str = to_string(i); if(str.size()%2==0)res++; }原创 2020-07-19 22:17:51 · 84 阅读 · 0 评论 -
[LeetCode]1281. 整数的各位积和之差
算法标签 字符串题目简叙思路转成字符串取代码class Solution {public: int subtractProductAndSum(int n) { string str = to_string(n); int a=0; for(int i=0;i<str.size();i++)a+=str[i]-'0'; int b=1; for(int i=0;i<str.si原创 2020-07-19 22:13:23 · 180 阅读 · 0 评论 -
[LeetCode]1486. 数组异或操作
算法标签 位运算题目简叙思路加粗样式代码class Solution {public: int xorOperation(int n, int start) { vector<int> arr(n); for(int i=0;i<arr.size();i++)arr[i]=start+(2*i); int res=arr[0]; for(int i=1;i<arr.size();i++)res^原创 2020-07-19 22:09:35 · 167 阅读 · 0 评论