自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Entry discovery/discovery.proto is a duplicate

【代码】Entry discovery/discovery.proto is a duplicate。

2023-04-13 20:38:01 267 1

原创 笔记集合(leetcode)

2022/2/26二叉树1.力扣2.力扣

2022-02-26 14:21:42 304

原创 剑指 Offer 46. 把数字翻译成字符串

跳格子和子串:动态规划class Solution {public: int translateNum(int num) { if(num<=9) return 1; string s=to_string(num); vector<int>dp(s.length()); dp[0]=1; dp[1]=s[0]=='1'||(s[0]=='2'&&s[1]<'6')?2:

2022-02-18 17:07:11 98

原创 剑指 Offer 38. 字符串的排列

有点不求甚解了。。。。。。class Solution {public: void dfs(string s,string temp,vector<bool>&visited,set<string>&res) { if(temp.length()==s.length()){ res.insert(temp); return; } for(int

2022-02-18 14:57:16 79

原创 剑指 Offer 36. 二叉搜索树与双向链表

中序遍历+递归,建立两个节点:pre和head。判断是否是第一个头节点,也就是pre=nullptr,用head记录第一个节点。然后常规操作:pre->right=cur; cur->left=pre;更新pre=cur;最后head->left=pre,pre->right=head;此时的pre是最后一个节点。/*// Definition for a Node.class Node {public: int val; Node* left

2022-02-18 14:29:27 138

原创 147. 对链表进行插入排序

/** * 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, ListNode *next) : val(x), next(next.

2022-02-17 17:37:41 357

原创 49. 字母异位词分组

按字符排序,在用一个map存储字符顺序相同的字符串。class Solution {public: vector<vector<string>> groupAnagrams(vector<string>& strs) { vector<vector<string>>res; map<string,vector<string>>m; for(int i=

2022-02-17 14:58:25 49

原创 剑指 Offer 34. 二叉树中和为某一值的路径

先序遍历+记录路径这里少用一个变量用于记录节点和:target-root->val==0&&root->left==null&&root->right==null时,记录路径。与遍历不同的是:需要恢复路径,即在访问完当前节点后,path需要pop最后的节点。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode

2022-02-16 11:27:54 419

原创 剑指 Offer 33. 二叉搜索树的后序遍历序列

最后访问的一定是根节点,所以扫描数组找 出第一个大于根节点的位置记作m,则 [i,m-1] 的值都是小于根节点的数,即为左子树;[m,j-1]为右子树,判断[m,j-1]的值是否都大于根节点:依据是p==j,即扫描到数组尾。再递归判断左子树和右子树是否为二叉树。class Solution {public: bool ispost(int i,int j,vector<int>&postorder){ if(i>=j) return true;

2022-02-16 10:13:55 108

原创 剑指 Offer 32 - III. 从上到下打印二叉树 III

这题有难度,利用了双端队列,如果当前层是奇数,则在队首加入元素,否则在队尾加入元素。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution

2022-02-15 11:32:11 358

原创 102. 二叉树的层序遍历

在队列里加一个for循环,循环次数为当前队列 长度,这样每次循环后,出队的都是当前层的节点。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int.

2022-02-15 10:46:55 246

原创 面试题32 - I. 从上到下打印二叉树

层次遍历,借助一个队列/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<int&gt.

2022-02-15 10:01:23 65

原创 剑指 Offer 31. 栈的压入、弹出序列

通过一个栈来模拟,扫描pushed数组,入栈,判断poped数组中的元素是否等于当前入栈的元素,如果相等,一直出栈。最后判断栈是否为空。空了就说明顺序是对的。class Solution {public: bool validateStackSequences(vector<int>& pushed, vector<int>& popped) { stack<int>s; int j=0;

2022-02-14 19:41:38 150

原创 剑指 Offer 29. 顺时针打印矩阵

class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int> res; if(matrix.empty()) return res; int t=0,d=matrix.size()-1; int l=0,r=matrix[0].size()-1; .

2022-02-14 10:20:40 203

原创 剑指 Offer 24. 反转链表

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(ListNode* head) { if(!head) return he.

2022-02-13 19:45:54 180

原创 剑指 Offer 26. 树的子结构

剑指 Offer 26. 树的子结构 - 力扣(LeetCode) (leetcode-cn.com)B是A的子树的情况:B先遍历空 A=B B是A的左子树,或右子树。如果B先为空,则B是A的子树;如果A先空,则B不是A的子树。需要一个函数比较A的子树和B相同,则B是A的子树:A子树根节点和B根节点相同,左右相等。/** * Definition for a binary tree node. * struct TreeNode { * int val; *

2022-01-20 21:54:40 276

原创 剑指 Offer 16. 数值的整数次方

剑指 Offer 16. 数值的整数次方 - 力扣(LeetCode) (leetcode-cn.com)整不了了。。。。。class Solution {public: double myPow(double x, int y) { double res=1; long n=y; if(n<0){ x=1/x; n=-n; }

2022-01-19 21:27:42 133

原创 剑指 Offer 14- II. 剪绳子 II

剑指 Offer 14- II. 剪绳子 II - 力扣(LeetCode) (leetcode-cn.com)这是一道数学题,当绳子长度都相同的时候,乘积最大。假设减了a段,乘积为x的a次方,a=n/x;所以有x*(x^(n/x))最大,当x=3时,乘积最大,可以用函数求导算出来。所以n=3*a+b, 当b=0时,最大乘积=3^a; 当b=1时,最大乘积=4*3^(a-1); 当b=2时,最大乘积等于2*3^a;class Solution {public: int cutt.

2022-01-19 19:56:58 209

原创 剑指 Offer 13. 机器人的运动范围

剑指 Offer 13. 机器人的运动范围 - 力扣(LeetCode) (leetcode-cn.com)这题和矩阵中的字母相似,采用dfs搜索,卡住的点是搜索过的格子,在递归调用后没有恢复,想了一下,是因为这个只统计可以到达的个数,既然已经扫描过这个格子了,恢复反而会多算,至于为什么上道题恢复了是因为上一个找字符相同,这个字符不一定要按照当前搜索的格子的顺序排列,所以需要恢复。class Solution {public: int sumindex(int i,int j){

2022-01-18 20:17:19 252

原创 剑指 Offer 12. 矩阵中的路径

剑指 Offer 12. 矩阵中的路径 - 力扣(LeetCode) (leetcode-cn.com)牛批,dfs yyds!class Solution {public: bool dfs(vector<vector<char>>& board,string word,int i,int j,int k){ int row=board.size(); int col=board[0].size();

2022-01-17 22:07:13 183

原创 1220. 统计元音字母序列的数目

这是我见过最牛批的代码class Solution {public: int countVowelPermutation(int n) { long a=1,e=1,i=1,o=1,u=1; const int m=1e9+7; for(int k=2;k<=n;k++){ long aa=(e+i+u)%m; long ee=(a+i)%m; long ii=(e

2022-01-17 21:18:17 113

原创 剑指 Offer 07. 重建二叉树

剑指 Offer 07. 重建二叉树 - 力扣(LeetCode) (leetcode-cn.com)中序遍历结合先序遍历,重建二叉树:先序遍历头一个数一定是根节点,然后扫描中序数组找到这个值,左边是左子树,右边是右子树,递归建立。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; *

2022-01-17 20:21:33 601

原创 382. 链表随机节点

382. 链表随机节点 - 力扣(LeetCode) (leetcode-cn.com)空间换取时间:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} *

2022-01-16 20:27:59 30

原创 剑指 Offer 04. 二维数组中的查找

剑指 Offer 04. 二维数组中的查找 - 力扣(LeetCode) (leetcode-cn.com)tql.......从右上角往回看。。。class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { if(matrix.size()==0) return false; int row=0,

2022-01-16 19:54:05 225

原创 560. 和为 K 的子数组

560. 和为 K 的子数组 - 力扣(LeetCode) (leetcode-cn.com)这题暴力解法超时。。。。(将(0,i)所有的情况列一遍,j=i,j>=0,j--)优化枚举(0,i)所有子集情况,可以用差来看,(0,i)的和可以拆成(0,j)+(j,i),如果sum(j,i)=k,那统计sum(j,i)=k的次数与统计sum(0,j)出现的次数相同,而sum(0,j)=sum(0,i)-k,这样可以统一到统计从0开始累加和sum(i),出现的次数即可。class Soluti

2022-01-15 21:27:44 57

原创 剑指 Offer II 005. 单词长度的最大乘积

剑指 Offer II 005. 单词长度的最大乘积 - 力扣(LeetCode) (leetcode-cn.com)贼邪门,res=INT32_MIN竟然不行。。。。。。。。。。class Solution {public: int maxProduct(vector<string>& words) { int res=0; bool flag=false; for(int i=0;i<words.size();

2022-01-13 20:21:10 32

原创 剑指 Offer II 004. 只出现一次的数字

剑指 Offer II 004. 只出现一次的数字 - 力扣(LeetCode) (leetcode-cn.com)今天又会了一招,位运算。hhhhhhhint表示32位二进制,将每个数字拆成0,1表示的位。如果数字出现了三次,那么在32个位上,将每位求和应该是3的倍数,例如,3个8可以表示成:010001000100求和是0300,如果有一个数只出现了一次,按位求和再对3取余后得到的一定是该数的二进制表示,例如 8,8,8,9:0100010001000101按

2022-01-12 22:09:06 109

原创 剑指 Offer II 002. 二进制加法

剑指 Offer II 002. 二进制加法 - 力扣(LeetCode) (leetcode-cn.com)明明没啥技术含量,就是不过,就很烦躁。。。。。。。。class Solution {public: string addBinary(string a, string b) { int an=a.length(); int bn=b.length(); int len=an>bn?an:bn; string r

2022-01-12 20:42:17 37

原创 334. 递增的三元子序列

class Solution {public: bool increasingTriplet(vector<int>& nums) { int omin=INT32_MAX,smin=INT32_MAX; for(int i=0;i<nums.size();i++){ if(nums[i]<=omin){ omin=nums[i]; } .

2022-01-12 19:48:48 43

原创 16. 最接近的三数之和

class Solution {public: int threeSumClosest(vector<int>& nums, int target) { int res; int m=1500; sort(nums.begin(),nums.end()); for(int i=0;i<nums.size();i++){ int left=i+1; int ri.

2022-01-11 21:28:48 36

原创 15. 三数之和

这题有点难度,主要是在判断三个数和为0且数组不重复。用了排序+双指针(参考大佬的思路)1.从小到大排序2.从头遍历数组3.nums[i]>0返回res4. 如果nums[i]==nums[i-1] 重复,跳过i 1)left=i+1,right=n-1; 2) while(left<right)如果nums[i]+nums[left]+nums[right]==0, 加入,同时去重,left+1如果和left的数相同,跳过,同理right.如果和&lt...

2022-01-11 20:14:31 113

原创 8. 字符串转换整数 (atoi)

class Solution {public: int myAtoi(string s) { bool flag=false; bool non=false; long res=0; for(int i=0;i<s.length();i++){ if(s[i]==' '&&!flag) continue; else if(s[i]=='-'&&!fla.

2022-01-10 20:50:01 28

原创 6. Z 字形变换

6. Z 字形变换 - 力扣(LeetCode) (leetcode-cn.com)这解法太绝了,用一个vector<string>rows记录结果的每一行,从头扫描s,当前位置为0或numRows-1改变方向,绝!class Solution {public: string convert(string s, int numRows) { if(numRows==1) return s; int cur=0; bool fl

2022-01-10 19:40:28 139

原创 3. 无重复字符的最长子串

3. 无重复字符的最长子串 - 力扣(LeetCode) (leetcode-cn.com)这题有技术含量,用了滑动窗口,比如说s = "abcabcbb",用unordered_set保存最长的字串,初始时保存一个字符a,从下一个位置开始扫描s,如果在set里找到相同的元素,去掉set开头的字符,继续在set里找与s在该位置相同的元素,如果没有找到,则将s对应位置的字符插入到set中。class Solution {public: int lengthOfLongestSubs

2022-01-09 21:18:52 134

原创 1. 两数之和

class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { for(int i=0;i<nums.size();i++){ for(int j=i+1;j<nums.size();j++){ if(nums[i]+nums[j]==target){ r.

2022-01-09 20:27:58 188

原创 1629. 按键持续时间最长的键

class Solution {public: char slowestKey(vector<int>& releaseTimes, string keysPressed) { int maxt=releaseTimes[0]; int index=0; for(int i=1;i<releaseTimes.size();i++){ if(releaseTimes[i]-releaseTimes[i.

2022-01-09 20:14:31 191

原创 剑指 Offer 30. 包含min函数的栈

剑指 Offer 30. 包含min函数的栈 - 力扣(LeetCode) (leetcode-cn.com)class MinStack {public: /** initialize your data structure here. */ stack<int>s; int Min=INT32_MAX; MinStack() { } void push(int x) { s.push(Min);

2022-01-09 19:59:28 112

原创 剑指 Offer 09. 用两个栈实现队列

剑指 Offer 09. 用两个栈实现队列 - 力扣(LeetCode) (leetcode-cn.com)class CQueue {public: stack<int> s1; stack<int>s2; CQueue() { s1.push(-1); s2.push(-1); } void appendTail(int value) { s1.push(value); }

2022-01-09 19:11:13 122

原创 120. 三角形最小路径和

120. 三角形最小路径和 - 力扣(LeetCode) (leetcode-cn.com)class Solution {public: int minimumTotal(vector<vector<int>>& triangle) { int n=triangle.size(); int m=triangle[n-1].size(); vector<vector<int>>dp;

2021-11-15 20:06:38 783

原创 96. 不同的二叉搜索树

96. 不同的二叉搜索树 - 力扣(LeetCode) (leetcode-cn.com)class Solution {public: int numTrees(int n) { if(n==0||n==1) return n; vector<int>dp(n+1); dp[0]=1; dp[1]=1; dp[2]=2; int sum=0; for(int i=3;i<n

2021-11-12 20:39:13 691

空空如也

空空如也

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

TA关注的人

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