自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

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

解法一递归class Solution {public: bool verifyPostorder(vector<int>& postorder) { if(postorder.size()==0) return true; return rever(postorder, 0 ,postorder.size()-1); } bool rever(vector<int>& postorder, int l.

2021-03-13 10:27:19 63

原创 剑指 Offer 60. n个骰子的点数

解法一动态规划,每多一位n多进行一轮class Solution {public: vector<double> dicesProbability(int n) { vector<double> dp(6,1.0/6.0); for (int i = 2; i <= n; i++) { vector<double> temp(5*i+1,0); for (.

2021-03-12 16:42:33 93

原创 剑指 Offer 56 - II. 数组中数字出现的次数 II

解法一排序class Solution {public: int singleNumber(vector<int>& nums) { sort(nums.begin(),nums.end());//排序 for (int i = 0; i < nums.size()-2; i+=3)//注意跳出循环条件 { if(nums[i]!=nums[i+2]) return nums[i];//每隔三个.

2021-03-12 15:19:32 96

原创 剑指 Offer 56 - I. 数组中数字出现的次数

解法一异或运算有个重要的性质,两个相同数字异或为 0 ,即对于任意整数 a,有a⊕a=0 。题中有两个不同的数字,需要把二者分组,各组别自行异或,最终可以获得落单的数字。class Solution {public: vector<int> singleNumbers(vector<int>& nums) { int x=0,y=0,n=0,m=1; for(int num:nums ){ n^=num;.

2021-03-12 14:14:07 69

原创 剑指 Offer 66. 构建乘积数组

解法一双向遍历,利用表格进行划分可以把计算拆成两部分从上到下,左下角一次遍历,计算出B[1]~B[3]的乘积从下到上,右上角一次遍历,计算出B[2]~B[0]的乘积这里用的技巧是基于上一个B[i-1]来计算,即 B[i] = B[i-1] * A[i-1]class Solution {public: vector<int> constructArr(vector<int>& a) { int n =a.size(); .

2021-03-11 17:11:11 74

原创 剑指 Offer 63. 股票的最大利润

解法一双循环暴力破解 可能会导致超时class Solution {public: int maxProfit(vector<int>& prices) { int ans = 0; for (int i = 0; i < prices.size(); i++) { for (int j = i+1; j < prices.size(); j++) { .

2021-03-11 16:29:54 97

原创 剑指 Offer 62. 圆圈中最后剩下的数字

解法一著名的约瑟夫环问题class Solution {public: int lastRemaining(int n, int m) { int x=0; for (int i = 2; i <=n; i++) { x=(x+m)%i; } return x; }};约瑟夫环,公式推导过程...

2021-03-11 15:28:55 68

原创 剑指 Offer 61. 扑克牌中的顺子

解法一假设输入是无序的class Solution {public: bool isStraight(vector<int>& nums) { int maxV=0,minV=13; int excited[14]; for (int i = 0; i < nums.size(); i++) { if(nums[i]!=0){ if(excite.

2021-03-11 14:32:51 69

原创 剑指 Offer 59 - II. 队列的最大值

解法一双指针class MaxQueue {public: int q[20000];//要足够大 int begin=0,end=0; MaxQueue() { } int max_value() { int ans=-1; for (int i = begin; i != end ; i++) { ans = max(ans,q[i]); } .

2021-03-09 20:07:02 66

原创 剑指 Offer 59 - I. 滑动窗口的最大值

解法一for循环class Solution {public: vector<int> maxSlidingWindow(vector<int>& nums, int k) { vector<int> ans; if(nums.size()==0) return ans; for (int i = 0; i <= nums.size()-k; i++) { .

2021-03-09 16:21:35 73

原创 剑指 Offer 20. 表示数值的字符串

解法一注意边界条件1.从第一个不为空格的字符到最后一个不为空格的字符,中间不得出现任何空格。2.’.’ 只能出现一次,而且不可以出现在 ‘e’ 的后面,且紧贴着 ‘.’ 的左边或者右边或者两边必须有数字(也就是不能是一个单独的 ‘.’)。3.‘e’ 只能出现一次,而且紧贴着 ‘e’ 的左边必须有数字。4.’+’ 和 ‘-’ 要么在第一位,要么紧随 ‘e’ 后。5.最后一位不可以是 ‘e’ 或 ‘+’ 或 ‘-’。class Solution {public: bool isNumb.

2021-03-09 10:59:57 103

原创 剑指 Offer 44. 数字序列中某一位的数字

解法一数学分析。class Solution {public: int findNthDigit(int n) { int i=1; while(n>0.9*pow(10,i)*i) n-=0.9*pow(10,i)*i,i++; string res=to_string(pow(10,i-1)+(n-1)/i);//找到对应的数字 return res[(n-1)%i]-'0';//找到对应的位 }};.

2021-03-08 17:15:11 80

原创 剑指 Offer 45. 把数组排成最小的数

解法一class Solution {public: string minNumber(vector<int>& nums) { if(nums.size()==1) return to_string(nums[0]); vector<string> s; string res=""; for (int i = 0; i < nums.size(); i++) { .

2021-03-08 15:49:37 69

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

解法一 数学建模1.每次取最后两位数,rem = num % 1002.若rem > 25,则无法表示,即rem的个位和十位无法合一起,则用translateNum(num/10),表示前进一位3.若在00 <= rem <= 09,则无法表示,即rem的个位和十位无法合一起,所以用translateNum(num/10)4.若在10 <= rem <= 25,则可以分出两种表示方法,所以用translateNum(num/10) + translateNum(num.

2021-03-08 11:36:38 72

原创 剑指 Offer 47. 礼物的最大价值

解法一判断标准则是选左边的格子的最大价值或者上边格子的最大价值,然后加上该格子的礼物价值。class Solution {public: int maxValue(vector<vector<int>>& grid) { if(grid.size()==0 && grid[0].size()==0) return 0; int row = grid.size(), colums = grid[0].size();.

2021-03-07 23:33:35 70

原创 剑指 Offer 41. 数据流中的中位数

解法一左手一个大顶堆 + 右手一个小顶堆。class MedianFinder {public: /** initialize your data structure here. */ priority_queue<int,vector<int>,greater<int>> qleft;//大顶堆 priority_queue<int,vector<int>,less<int>> qright;//小顶.

2021-03-05 14:31:01 90

原创 剑指 Offer 48. 最长不含重复字符的子字符串

解法一双指针,left与right,各进行一次遍历class Solution {public: int lengthOfLongestSubstring(string s) { int maxlen=0; unordered_set<char> chars; int right = 0; for (int i = 0; i < s.size(); i++) { whil.

2021-03-05 13:59:17 58

原创 剑指 Offer 49. 丑数

解法一一个丑数乘以 2, 3, 5 之后, 一定还是一个丑数。class Solution {public: int nthUglyNumber(int n) { vector<int> dp(n,0); dp[0]=1; int p2=0,p3=0,p4=0; for (int i = 1; i < n; i++) { dp[i]=min(min(dp[p2]*2,dp.

2021-03-05 10:21:35 71 1

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

解法一回溯法DFSclass Solution {public: vector<string> permutation(string s) { dfs(s,0); return res; }private: vector<string> res; void dfs(string s, int x){//第x位字符 if(x==s.size()-1){ res.push_.

2021-03-04 19:12:05 101 1

原创 剑指 Offer 58 - II. 左旋转字符串

原地操作法可以先将字符串的前半部分逆置,再将后半部分逆置,最后再整体逆置,就能实现字符串左旋。此方法占用资源最少。class Solution {public: string reverseLeftWords(string s, int n) { rever(s,0,n-1); rever(s,n,s.size()-1); rever(s,0,s.size()-1); return s; } void rev.

2021-03-04 18:33:58 103 4

原创 剑指 Offer 58 - I. 翻转单词顺序

解法一指针,倒序阅读,性能较差class Solution {public: string reverseWords(string s) { if(s.empty()) return s; int lenth = 0; string res=""; for (int i = s.size()-1; i>=0; i--) { if(s[i]==' ' && lenth!.

2021-03-04 14:58:52 111 1

原创 剑指 Offer 55 - II. 平衡二叉树

解法一class Solution {public: bool isBalanced(TreeNode* root) { return deepth(root)!=-1; } int deepth(TreeNode* root){ if(root==NULL) return 0; int left=deepth(root->left); if(left==-1) return -1; int.

2021-03-04 14:02:53 65 1

原创 剑指 Offer 55 - I. 二叉树的深度

思路树的遍历方式总体分为两类:深度优先搜索(DFS)、广度优先搜索(BFS);常见的 DFS : 先序遍历、中序遍历、后序遍历;常见的 BFS : 层序遍历(即按层遍历)。解法一后序遍历DFS 递归三部曲1.确定递归函数的参数和返回值:参数就是传入树的根节点,返回就返回这棵树的深度,所以返回值为int类型。2.确定终止条件:如果为空节点的话,就返回0,表示高度为0。3.确定单层递归的逻辑:先求它的左子树的深度,再求的右子树的深度,最后取左右深度最大的数值 再+1 (加1是因为算上当前中间节.

2021-03-04 10:41:02 75 2

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

解法一用reverse函数对于海量数据效率太低,可以用双端队列deque要注意push的/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Soluti.

2021-03-03 21:02:03 64 2

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

BFS模板vector<vector<int>> levelOrder(TreeNode* root) { queue<TreeNode*> q; q.push(root); //... while(q.size()) { int size=q.size(); //... for(int i=0;i<size;i++) { TreeNo.

2021-03-02 12:33:18 70

原创 剑指 Offer 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> lev.

2021-03-02 10:28:57 118

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

解法一递归遍历class Solution {public: bool isSubStructure(TreeNode* A, TreeNode* B) { bool res=false; if(A!=NULL && B!=NULL){ if(A->val == B->val) res=help(A,B);//以其为起点判断是否为子树结构 if(!res) res=isSubStruc.

2021-03-01 23:07:45 58

原创 剑指 Offer 54. 二叉搜索树的第k大节点

解法一迭代class Solution {public: int kthLargest(TreeNode* root, int k) { stack<TreeNode*> stc; int n=0; while (!stc.empty() || root) { while (root) { stc.push(root); .

2021-03-01 20:39:23 59

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

解法一hash map+递归class Solution {private: unordered_map<int,int> index;public: TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) { int n = preorder.size(); for (int i = 0; i < n; i++) .

2021-03-01 20:15:20 69

网络管理概论.pptx

课件PPT,来换个积分,大家可以随意看看,不是特别新,一些概念总结。。。。。。。。。。。。。。。。。。。。。。。。。。。

2020-03-15

空空如也

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

TA关注的人

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