- 博客(29)
- 收藏
- 关注
原创 剑指offer32.从上到下打印二叉树
0524代码class Solution {public: vector<int> levelOrder(TreeNode* root) { vector <int>res; queue<TreeNode*>q; if(root) q.push(root); while(!q.empty()){ TreeNode* node=q.front();
2022-05-24 21:36:48 130
原创 剑指offer26.树的子结构
0521代码class Solution {public: bool isSubStructure(TreeNode* A, TreeNode* B) { if(A==NULL||B==NULL) return false; return q_val(A,B)||isSubStructure(A>left,B) ||isSubStructure(A->right,B); } bool q_val(TreeNode*A,
2022-05-21 11:01:04 138
原创 剑指offer57.和为s的两个数
刷题自用0518代码class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { int left=0; int n=nums.size(); int right=n-1; vector <int> res; while(left<right){ if
2022-05-18 20:42:25 171
原创 剑指offer18.删除链表结点
刷题自用0518代码class Solution {public: ListNode* deleteNode(ListNode* head, int val) { ListNode*first=head; ListNode*second=head->next; if(first->val==val) return first->next; while(second!=NULL&&second-&g
2022-05-18 20:29:40 138
原创 剑指offer10.斐波那契数列
刷题自用0517问题描述F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.代码class Solution {public: int fib(int n) { int left=0; int right=1; int sum=0; if(n<2) return n; for(int i=2;i<=n;i++){
2022-05-17 19:26:03 95
原创 剑指offer07.重建二叉树
0517刷题自用题目描述某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点代码class Solution {public: TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) { if(preorder.size()==0&&inorder.size()==0) return NULL; auto headro
2022-05-17 10:58:40 273
原创 剑指offer53.两个链表的第一个交点
刷题自用0515代码class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { ListNode *a=headA; ListNode *b=headB; while(headA!=headB){ headA=headA==NULL?b:headA->next; headB=headB==N
2022-05-15 16:29:49 108
原创 剑指offer58.旋转字符串2
0515刷题自用代码class Solution {public: string reverseLeftWords(string s, int n) { string a,b; int num=s.length(); s+=s; return s.substr(n,num); }};思路例如:s=“abcdef”,n=3s=s+s=‘abcdefabcdef’s.substr(n,num) 复制s+s的第n到n
2022-05-15 14:34:34 783
原创 剑指offer29.顺时针打印矩阵
刷题自用描述输入一个矩阵,从外到里打印所有元素代码class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int>res; if(matrix.size()==0||matrix[0].size()==0) return res; int m=matrix.size();
2022-05-15 10:20:34 161
原创 剑指offer8.二叉树最近公共祖先2,0514
代码class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(root==NULL||root==p||root==q) return root; TreeNode *left=lowestCommonAncestor(root->left,p,q); TreeNode *right=lo
2022-05-15 08:40:12 77
原创 剑指offer57. 和为s的两个数,0514
刷题自用代码class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { int left=0; int n=nums.size(); int right=n-1; vector<int>res; while(left<right){ if(nums[l
2022-05-14 21:39:46 107
原创 剑指offer68.二叉搜索树的公共祖先
代码class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { while(1){ if(root->val>p->val&&root->val>q->val){ root=root->left; }else
2022-05-13 20:42:39 132
原创 剑指offer06.从尾到头打印链表
刷题自用0513代码class Solution {public: vector<int> reversePrint(ListNode* head) { vector<int> res; while(head){ res.push_back(head->val); head=head->next; } reverse(res.begin(),res
2022-05-13 14:51:43 137
原创 剑指offer04.二维数组的查找2022.0512
刷题自用代码class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { int a=matrix.size()-1; int b=0; while(a>=0&&b<matrix[0].size()){ if(target<matrix[
2022-05-12 21:09:06 140
原创 剑指offer03.数组中的重复数字0512
刷题自用代码class Solution {public: int findRepeatNumber(vector<int>& nums) { unordered_map <int,int>res; for(auto a:nums){ ++res[a]; if(res[a]>1) return a; } return 0;
2022-05-12 20:50:32 125
原创 118.杨辉三角,刷题自用0510
代码class Solution {public: vector<vector<int>> generate(int numRows) { vector <vector<int>> res (numRows); for(int i=0;i<numRows;i++) { res[i].resize(1+i); res[i][0]=res[i][i]=
2022-05-10 21:15:35 63
原创 70.爬楼梯,刷题自用0510
代码class Solution {public: int climbStairs(int n) { if(n<2) return 1; int first=1; int second=1; int sum=0; for(int i=2;i<=n;i++){ sum=first+second; first=second; second
2022-05-10 21:10:27 74
原创 053.最大连续子数组,0510刷题自用
代码class Solution {public: int maxSubArray(vector<int>& nums) { int n=nums.size(); //if(n=1) return nums[0]; int temp=nums[0]; int maxvalue=nums[0]; for(int i=1;i<n;i++){ temp=nums[i]+ma
2022-05-10 20:58:50 60
原创 剑指offer 61.扑克牌顺子判断,刷题自用0505
代码![在这里插入代码片]class Solution {public: bool isStraight(vector<int>& nums) { sort(nums.begin(),nums.end()); int zero=0; int n=nums.size(); for(int i=0;i<4;i++){ if(nums[i]==0){ zer
2022-05-05 21:39:01 161
原创 剑指offer 06.从尾到头打印链表,刷题自用0505
代码class Solution {public: vector<int> reversePrint(ListNode* head) { vector<int>res; while(head){ res.push_back(head->val); head=head->next; } reverse(res.begin(),res.end());
2022-05-05 16:06:47 430
原创 剑指offer.47 最大的礼物价值,刷题自用0505
代码class Solution {public: int maxValue(vector<vector<int>>& grid) { int dp[205][205] = {0}; int n = grid.size(), m = grid[0].size(); dp[0][0] = grid[0][0]; for(int i = 1; i < m; i++) { dp
2022-05-05 15:58:57 134
原创 剑指offer05.替换空格,刷题自用0504
代码class Solution {public: string replaceSpace(string s) { string res; for(auto t:s){ if(t==' '){ res.push_back('%'); res.push_back('2'); res.push_back('0'); }
2022-05-04 20:10:32 45
原创 剑指offer.01 数组中重复的数(0504刷题自用)
代码class Solution {public: int findRepeatNumber(vector<int>& nums) { unordered_map <int,int>res; for(auto i:nums){ ++res[i]; if(res[i]>1) return i; } return 0;
2022-05-04 16:10:31 811
原创 454.四数相加II,刷题自用
代码class Solution {public: int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) { unordered_map<int, int> AB; for (int i: A) { for (int j: B) {
2022-05-04 15:40:02 238
转载 18. 四数之和,刷题记录0503,自用
代码class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { sort(nums.begin(),nums.end()); int n=nums.size(); vector<vector<int>> res; for(int i=0;i<n-3;+
2022-05-03 19:10:08 52
转载 刷题记录16. 最接近的三数之和,自用
题目描述 16. 最接近的三数之和代码class Solution {public: int threeSumClosest(vector<int>& nums, int target) { sort(nums.begin(),nums.end()); int value=nums[0]+nums[1]+nums[2]; int n=nums.size(); for(int i=0;i<n-2;++i){
2022-05-03 16:47:01 85
转载 15.三数之和(刷题记录,自用0503)
题目描述:15.三数之和代码:class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { int n=nums.size(); vector<vector<int>> res; sort(nums.begin(),nums.end()); for(int first=0;fir
2022-05-02 19:58:20 76
转载 刷题记录0502,自用(数组,贪心,双指针)
问题描述:11.盛水最多的容器给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。代码:class Solution {public: int maxArea(vector<int>& height) { int left=0; int n=height.
2022-05-02 19:46:20 57
原创 刷题记录0502,自用(数组,哈希表)
问题描述:01两数之和代码:class Solution{ private: unordered_map<int,int> res; public: vector<int>twoSum(vector<int>&nums,int target){ int num=nums.size(); for(int i=0;i<num;++i){ auto it=res.find(
2022-05-02 19:29:57 80
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人