自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 收藏
  • 关注

原创 剑指offer专项突击--第十七天

剑指 Offer II 050. 向下的路径节点之和空间换时间,用哈希表class Solution {public: unordered_map<int,int>mp; int ans=0; void dfs(TreeNode* root,int targetSum,int nowSum){ mp[nowSum]++; if(mp[nowSum+root->val-targetSum]) ans+=(mp[nowSum+roo

2022-04-07 10:00:00 292

原创 剑指offer专项突击--第十六天

剑指 Offer II 047. 二叉树剪枝深搜class Solution {public: TreeNode* dfs(TreeNode* root){ if(root->left) root->left=dfs(root->left); if(root->right) root->right=dfs(root->right); if(root->val==0&&!root->l

2022-04-06 13:07:26 113

原创 剑指offer专项突击--第十五天

剑指 Offer II 044. 二叉树每层的最大值广搜取每一层最大值class Solution {public: vector<int> largestValues(TreeNode* root) { queue<TreeNode*>q; q.push(root); vector<int>ans; if(!root) return ans; int mmax = INT_MI

2022-04-05 10:00:00 193

原创 剑指offer专项突击--第十四天

剑指 Offer II 041. 滑动窗口的平均值队列class MovingAverage {public: /** Initialize your data structure here. */ queue<int>q; int max_size; int now_size; int sum; MovingAverage(int size) { max_size = size; sum = 0;

2022-04-04 10:00:00 306

原创 剑指offer专项突击--第十三天

剑指 Offer II 039. 直方图最大矩形面积单调栈class Solution {public: int largestRectangleArea(vector<int>& heights) { stack<int>s;s.push(-1); int mmax = 0; for(int i = 0; i < heights.size(); i++){ if(s.empty())

2022-04-03 09:46:25 426

原创 剑指offer专项突击--第十二天

剑指 Offer II 036. 后缀表达式栈实现class Solution {public: int evalRPN(vector<string>& tokens) { stack<int>s; for(int i=0;i<tokens.size();i++){ if((tokens[i][0]>'9'||tokens[i][0]<'0')&&tokens[i].siz

2022-04-02 10:00:00 121

原创 剑指offer专项突击--第十一天

剑指 Offer II 033. 变位词组排序加哈希class Solution {public: vector<vector<string>> groupAnagrams(vector<string>& strs) { vector<vector<string>>ans; unordered_map<string,vector<string>>mp; f

2022-04-01 10:26:56 112

原创 剑指offer专项突击--第十天

剑指 Offer II 030. 插入、删除和随机访问都是 O(1) 的容器用数组和map实现,当需要删除元素时将最后的元素移动到删除的元素位置class RandomizedSet {public: vector<int>num; unordered_map<int,int>mp; /** Initialize your data structure here. */ RandomizedSet() { } /** I

2022-03-31 11:16:46 845

原创 剑指offer专项突击--第九天

剑指 Offer II 027. 回文链表翻转后半段,然后比较class Solution {public: bool isPalindrome(ListNode* head) { ListNode* fast; ListNode* slow; fast=head; slow=head; while(fast->next&&fast->next->next){

2022-03-30 12:56:09 275

原创 剑指offer专项突击--第八天

剑指 Offer II 024. 反转链表从头依次翻转即可class Solution {public: ListNode* reverseList(ListNode* head) { if(!head) return head; ListNode* p=head->next; if(!p) return head; ListNode* q=head; head->next=NULL;

2022-03-29 10:00:00 122

原创 剑指offer专项突击--第七天

剑指 Offer II 021. 删除链表的倒数第 n 个结点双指针,一前一后,中间差n,这样当前指针结点到最后的时候需要删除的就是后指针结点class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode* p,*q; ListNode pre; pre.next=head; if(head->next==NULL&am

2022-03-28 10:00:00 118

原创 剑指offer专项突击--第六天

剑指 Offer II 017. 含有所有字符的最短字符串两个map,循环记录当前s区间满足字符的个数,当个数等于t的长度时更新答案class Solution {public: string minWindow(string s, string t) { unordered_map<char,int>hs,ht; for(auto p:t) ht[p]++; int l=0,r=0,cnt=0; string ans

2022-03-27 13:37:25 332

原创 剑指offer专项突击--第五天

剑指 Offer II 014. 字符串中的变位词两个数组,一个记录原字符串字符个数,另一个遍历另一个数组更新数组值,当数组相同时即是结果class Solution {public: bool checkInclusion(string s1, string s2) { vector<int>p1(26),p2(26); if(s1.size()>s2.size()) return false; for(int i=0;i&l

2022-03-26 10:00:00 376

原创 剑指offer专项突击--第4天

剑指 Offer II 010. 和为 k 的子数组前缀和加哈希class Solution {public: int subarraySum(vector<int>& nums, int k) { int n=nums.size(); vector<int>pre(n+1); //pre[0]=nums[0]; unordered_map<int,int>mp; mp.

2022-03-25 10:42:24 308

原创 剑指offer专项突击--第3天

剑指 Offer II 007. 数组中和为 0 的三个数一层循环下双指针,需要加判重的while循环class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>>ans; int n=nums.size(); sort(nums.begin(),nums.

2022-03-24 10:13:14 298

原创 剑指offer专项突击--第二天

剑指 Offer II 004. 只出现一次的数字sort排序后判断class Solution {public: int singleNumber(vector<int>& nums) { if(nums.size()==1) return nums[0]; sort(nums.begin(),nums.end()); for(int i=1;i<nums.size()-1;i++){ if(

2022-03-23 19:31:38 399

原创 剑指offer专项突击--第一天

剑指 Offer II 001. 整数除法位运算计算当前的数值是否大于除数,更新答案class Solution {public: int divide(int a, int b) { if(a==INT_MIN&&b==-1) return INT_MAX; int flag=(a>0)^(b>0)?1:0; unsigned int ua=abs(a); unsigned int ub=abs(b)

2022-03-22 11:44:38 139

原创 剑指offer--第31天

剑指 Offer 14- II. 剪绳子 II将数字分成若干个三的时候乘积最大class Solution {public: int cuttingRope(int n) { long long ans=1; if(n==2) return 1; if(n==3) return 2; while(n){ if(n>=3){ if(n==4){

2022-03-21 11:28:42 95

原创 Codeforces Round #778 (Div. 1 + Div. 2, based on Technocup 2022 Final Round)

A. Maximum Cake Tastiness排序取最大的两个即可void slove(){ int n;cin>>n; int a[n+5]; for(int i=1;i<=n;i++) cin>>a[i]; int ans=0; sort(a+1,a+n+1); ans+=a[n]+a[n-1]; cout<<ans<<endl;}B. Prefix Removals从前往后判

2022-03-20 20:57:24 451

原创 剑指offer--第30天

剑指 Offer 17. 打印从1到最大的n位数算出最大数,循环遍历即可class Solution {public: vector<int> printNumbers(int n) { vector<int>ans; int f=1; while(n--){ f*=10; } for(int i=1;i<f;i++) ans.push_back(i);

2022-03-20 10:21:39 298

原创 剑指offer--第29天

面试题19. 正则表达式匹配根据当前字符是‘*’或其他字符进行分类状态转移方程if(p[i-1]=='*') if(p[i-2]==s[i-1]||p[i-2]=='.')//如果p[i-2]==s[i-1],说明当前的*可以重复前面的字符,从而使当前字符匹配 dp[i][j]=dp[i-1][j]; dp[i][j]|=dp[i][j-2];//直接获取前两位的状态,因为可以*可以让之前的字符出现0次else if(p[i-1]==s[i-1]||p[i-1]=='.')//当前不为*时

2022-03-19 12:20:46 837

原创 剑指offer--第28天

剑指 Offer 37. 序列化二叉树题目要求将二叉树转化成一个字符串,然后又可以通过字符串构造出二叉树深搜出字符串,然后再深搜出二叉树即可,没时间写,附官方代码class Codec {public: void rserialize(TreeNode* root, string& str) { if (root == nullptr) { str += "None,"; } else { str +=

2022-03-18 09:23:23 96

原创 剑指offer--第27天

剑指 Offer 59 - I. 滑动窗口的最大值两种思路第一:将每一个区间里的降序序列下标存入双端队列,每次存入之后执行一次出队,将坐标不在当前区间里的删除,每一次入队的时候,先将小于当前值的全部出队,然后再入队,循环下来,每一次队首元素即是当前区间的最大值class Solution {public: vector<int> maxSlidingWindow(vector<int>& nums, int k) { int n=nums.si

2022-03-17 10:28:45 94

原创 剑指offer--第26天

剑指 Offer 20. 表示数值的字符串先附上题解:https://leetcode-cn.com/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/solution/cmo-ni-ti-si-lu-jian-dan-luo-ji-qing-xi-by-xiaonen/判断指数和非指数class Solution {public: bool isNumber(string s) { //1、从首尾寻找s中不为空格首尾位置,也就是去除

2022-03-16 13:18:17 46

原创 剑指offer--第25天

剑指 Offer 29. 顺时针打印矩阵四个循环遍历即可class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int>ans; if(matrix.size()==0||matrix[0].size()==0) return ans; int i=0,j=0,cal=matr

2022-03-15 08:54:38 117

原创 剑指offer--第24天

剑指 Offer 14- I. 剪绳子尽量将每个块分成长度为3class Solution {public: int cuttingRope(int n) { if(n==2) return 1; if(n==3) return 2; if(n==4) return 4; int f=n%3; int m=n/3; int ans=1; if(f==1){ f

2022-03-14 12:05:24 335

原创 剑指offer--第23天

剑指 Offer 39. 数组中出现次数超过一半的数字这题可以用哈希表直接求出来,但是时间会要慢一点,分析题目,一定会有一个数超过数组长度的一班,所以可以用一个数来记录当前最多的元素,一个数来记录当前最多元素的个数,遇到与当前记录的元素不同的时候,把当前记录的元素个数减一,当为0的时候更换当前记录的数,出现超过一半的数最后一定是记录的数class Solution {public: int majorityElement(vector<int>& nums) {

2022-03-13 09:40:10 1140

原创 剑指offer--第22天

剑指 Offer 56 - I. 数组中数字出现的次数因为一定存在两个不同的数,转换成二进制,两个不同的数一定会有相同的位上不同为1,其余相同的数异或为0,先取整体异或和,然后找到任意一个位上的1,这个1一定来自两个不同的数中间的一个,再然后通过循环来遍历和这个位置的1相与,相与为1则异或a,否则异或b,a和b则是这两个不同的数class Solution {public: vector<int> singleNumbers(vector<int>& nums)

2022-03-12 20:44:02 283

原创 剑指offer--第21天

剑指 Offer 15. 二进制中1的个数给定的一定是一个32为的二进制数,所以用循环计算每一位即可class Solution {public: int hammingWeight(uint32_t n) { int ans=0; for(int i=0;i<32;i++){ ans+=(n>>i&1); } return ans; }};剑指 Offer 65.

2022-03-11 10:15:38 39

原创 剑指offer--第20天

剑指 Offer 07. 重建二叉树本题可以参考之前的天梯赛建树这篇文章,大致思路是一样的,前序遍历的第一个一定是当前子树的头节点,而在中序遍历中,头节点两边分别为左子树和右子树,因此只需要去查询中序遍历中对应头节点的位置,继续搜索左右子树即可class Solution {public: unordered_map<int, int> index; TreeNode* dfs(int prel,int prer,int inl,int inr,vector<int&

2022-03-10 10:36:51 1199

原创 剑指offer--第19天

剑指 Offer 64. 求1+2+…+n本次要求不能用乘除法和循环,所以只能用递归来运算class Solution {public: int dfs(int n){ if(n==1) return 1; return n+dfs(n-1); } int sumNums(int n) { return dfs(n); }};剑指 Offer 68 - I. 二叉搜索树的最近公共祖先因为题目给定的是二叉搜索树,因此

2022-03-09 13:37:20 620

原创 45. 跳跃游戏 II

传送门(参考官方题解)更新每个点对应能够跳到的最大位置[2,1,3,2,2,4]第一次查询能够到达1和2的位置,更新数据,到达1位置时,不用更新maxpos,同时也没有到达end,不用更新数据,到达2位置时,2+3=5,此时出现最大值,更新maxpos,同时也到达之前的end,因此更新end,发现end已经到达最后,跳出循环class Solution {public: int jump(vector<int>& nums) { int ans=0;

2022-03-08 21:33:17 3015

原创 剑指offer--第18天

剑指 Offer 55 - I. 二叉树的深度本题需要计算二叉树的深度,可以采用深搜也可以采用广搜class Solution {public: int ans=0;int cnt=0; void dfs(TreeNode* root,int p){//深搜 if(!root){ans=max(ans,p);return ;} dfs(root->left,p+1); dfs(root->right,p+1);

2022-03-08 09:24:00 102

原创 剑指offer-第6天

面试题32 - I. 从上到下打印二叉树广搜,将每一层存入队列,然后输出即可class Solution {public: vector<int> levelOrder(TreeNode* root) { vector<int>ans; queue<TreeNode*>q; if(root==NULL) return ans; q.push(root); while(!q.emp

2022-03-07 10:48:07 32

原创 剑指offer--第17天

剑指 Offer 40. 最小的k个数排序,然后将前k个数存入ansclass Solution {public: vector<int> getLeastNumbers(vector<int>& arr, int k) { sort(arr.begin(),arr.end()); vector<int>ans; for(int i=0;i<k;i++) ans.push_back(arr[i])

2022-03-07 10:45:52 77

原创 剑指offer--第5天

剑指 Offer 04. 二维数组中的查找从右上角的元素开始,当当前元素大于给定值,横坐标左移,当小于给定值时,纵坐标下移,直到找到对应元素class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { if(matrix.size()==0) return false; if(matrix[0].size()=

2022-03-07 10:42:29 33

原创 剑指offer--第4天

剑指 Offer 03. 数组中重复的数字数组下表对应元素记录个数即可class Solution {public: int findRepeatNumber(vector<int>& nums) { int leng=nums.size(); int a[leng]; for(int i=0;i<leng;i++){ a[i]=0; } int ans=0;

2022-03-07 10:42:19 39

原创 剑指offer--第3天

剑指 Offer 05. 替换空格遍历替换即可class Solution {public: string replaceSpace(string s) { string s1=""; for(int i=0;i<s.size();i++){ if(s[i]==' '){ s1+="%20"; } else{ s1+=s[

2022-03-07 10:42:08 39

原创 剑指offer--第2天

剑指 Offer 06. 从尾到头打印链表取出链表元素再翻转数组class Solution {public: vector<int> reversePrint(ListNode* head) { vector<int>fp; while(head){ fp.push_back(head->val); head=head->next; } reve

2022-03-07 10:41:55 37

原创 剑指offer--第1天

剑指 Offer 09. 用两个栈实现队列每一次添加或删除对栈两个栈进行操作即可class CQueue {public: stack<int>s1,s2; CQueue() { } void appendTail(int value) { if(!s1.empty()) s1.push(value); else { while(!s2.empty()){

2022-03-07 10:41:42 34

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除