
剑指Offer
俺叫西西弗斯
找份前端开发工作
都柏林理工大学博士拟录取(没钱读)
李莫瑞克大学硕士在读(主持爱尔兰软件研究中心)
重庆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 · 197 阅读 · 0 评论 -
[LeetCode]剑指 Offer 56 - I. 数组中数字出现的次数
算法标签:位运算题目简叙思路利用异或操作符代码class Solution {public: vector<int> singleNumbers(vector<int>& nums) { vector<int>res(2); int k=0; for(int it:nums)k^=it; /* //0^k 0^k = k原创 2020-07-30 00:13:16 · 115 阅读 · 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 · 137 阅读 · 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 · 188 阅读 · 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 · 126 阅读 · 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 · 148 阅读 · 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 · 183 阅读 · 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 · 188 阅读 · 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 · 191 阅读 · 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 · 183 阅读 · 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 · 128 阅读 · 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 评论