自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2148. 元素计数【力扣】

题意理解给定一个数组,找出任何一个数,存在一个严格大于这个数的数和一个严格小于这个数的数,统计这个数的数量问题分析模拟法先排序,再遍历每个数,只要不等于最大值和最小值就算一个O(N)其他此题思路容易被限制到排序,快排、选择、堆之类的。这题就是找出数,然后检查。思路不能被限制了。每一题都需要用空杯心态来解决。力扣链接class Solution {public: int countElements(vector<int>& nums)

2022-01-25 09:20:24 311

原创 毕业设计-电商秒杀系统

本次毕业设计的题目是电商秒杀系统。

2022-01-17 00:01:15 942

原创 89. 格雷编码【力扣】

题意理解给定一个整数,求出一个满足格雷编码的序列,序列长度2^(n-1)问题分析用回溯,剪枝。卡点有3个:1.是怎么对某一位取反。答案是异或+左移;2.怎么用回溯,保存一个当前结果的序列vector,当前序列和结果序列分开;3.怎么剪枝,当得到正确答案,直接跳出循环。设置一个flag标志位。其他这题做了一天。回溯是我的弱项,还是有些点有点卡,不过下次更好的。链接力扣class Solution {public: vector<int> grayCo

2022-01-08 22:28:09 385

原创 剑指 Offer 60. n个骰子的点数【力扣】

题意理解给定n个骰子,求n个骰子的和出现的概率,按照从小到大的顺序排列可能和的概率。问题分析用动规状态变量是 n个骰子和为s的概率。状态转移方程是 dp[n][s] = sum( dp[n-1][s-i]* 1.0 / 6 ) , 1 <= i <= 6;为了降低存储,可以保留两行。因为是double,所有 1/6改成1.0/6才能保留小数其他好题。加油学习的忽视的一个关键点是,不完全按照自己的思路来,学习别人的思路,偷懒,投机,用少的思维力和少的时间..

2021-10-18 21:42:26 121

原创 剑指 Offer 51. 数组中的逆序对【力扣】

题意理解给定一个数组,计算逆序对的个数问题分析用归并归并和逆序怎么关联?每次两个有序序列合并,对于左边的最小值放入最后序列的适合,最后序列左边的,比它小的,都是和逆序关系。问题转化为计算左边最小值放入最后序列时,右边序列已处理的元素个数。其他力扣链接class Solution {public: int mergeSort(vector<int>& nums, vector<int>& tmps, int l, int h)

2021-10-17 22:26:51 137

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

题意理解给定一串连续数字连接起来的字符串,判断第n位数字是几?问题分析模拟法先判断是几位数,然后判断是那个数,最后判断数的第几位。其他难就难在怎么条件判断!力扣链接class Solution {public: int findNthDigit(int n) { if (n < 10) return n; int digit = 1; int start = 1; long long ind

2021-10-17 22:21:09 97

原创 剑指 Offer 43. 1~n 整数中 1 出现的次数【力扣】

题意链接给定一个数n,求1到n这些数中1出现的次数。问题分析动规有点难,问题转化为每一个位出现的次数。其他链接class Solution {public: int countDigitOne(int n) { long long i = 1, coef = 1, sum = 0, cur_sum = 0; if (n < 10) return 1; while(coef <= n) {

2021-10-17 11:52:22 83

原创 剑指 Offer 49. 丑数【力扣】

题意理解找出所有只有包含2,3,5因子的数,排序得到第n个数。问题分析思路奇特用最小堆,用最小数乘2,3,5,放入堆,有重复,剔除重复数,每次把最小数删除,最小数一定是最小的。但是堆里其他数不一定是最小的。其他学习链接class Solution {public: int nthUglyNumber(int n) { if (n == 1) return 1; priority_queue<long, vector<lo

2021-10-16 21:04:07 66

原创 剑指 Offer 37. 序列化二叉树【力扣】*

题意理解给定一个二叉树,将它序列化出一个字符串,再反向生成原来的二叉树问题分析设计字符串间隔,外加上叶子节点左右空子树的标志。其他之前做出来过,现在又不会了。说明挺难的链接/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(

2021-10-16 19:58:57 54

原创 剑指 Offer 67. 把字符串转换成整数【力扣】

题意理解给定一个字符串,按照规则转换成整数,如果大于INT_MAX,设置为INT_MAX;如果小于INT_MIN,设置为INT_MIN;如果不是整数,设置成0问题分析自动状态机+整数边界判断。其他链接class Solution {public: int strToInt(string str) { enum STATUS_TYPE { START, ONE, TWO,..

2021-10-13 23:50:50 66

原创 剑指 Offer 20. 表示数值的字符串【力扣】

题意理解给定一个字符串,指定数值的格式规范,判断字符串是不是一个数值。问题分析用自动状态机,最难的是设计状态和状态变迁的过程,如下图。状态机的优点是清晰,方便修改。其他力扣状态机是解复杂校验的最佳方法,化烦为简,主观能动性的深刻体现。链接class Solution {public: bool isNumber(string s) { enum STATUS_TYPE { START, ON.

2021-10-13 22:40:41 59

原创 剑指 Offer 59 - II. 队列的最大值【力扣】

题意理解设计一个类,要求对队列的插入,删除,取最大值都是O(1)问题分析用普通队列解决插入,删除解决常量复杂度。用双端队列+单调递减队列解决最大值常量复杂度。其他力扣链接class MaxQueue {public: MaxQueue() { } int max_value() { if (my_que.size() == 0) { return -1; } else

2021-10-12 22:42:23 60

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

题意理解给定一个字符串,和窗口大小k,求从左到右滑动窗口,每个窗口的最大值序列。问题分析优先级队列难点是怎么运用,技巧很强每个窗口用堆表示,每向后移一位,新的元素放入堆中,如果最大值对应的序号在窗口长度之外,那么删除栈顶元素,删除的元素一定是窗口之外,直到堆顶元素是窗口之内。所以这个堆元素用二元组表示,一个表示值,一个表示序号。其他力扣链接class Solution {public: vector<int> maxSlidingWindo

2021-10-12 21:56:33 69

原创 剑指 Offer 20. 表示数值的字符串【力扣】

题意理解给定一个字符串,判断是不是数值,数值包括小数,整数,科学计数格式三种,可以带+-;问题分析动规,一层层判断,包括整数判断,小数判断,其他花了好长时间,思路要整理整理,虽然做出来了,不过很多条件没有考虑到。链接class Solution {public: bool isNumber(string s) { int len = s.size(); int low = 0, high = len - 1; //cou

2021-10-06 21:52:47 79

原创 剑指 Offer 29. 顺时针打印矩阵【力扣】

题意理解给定一个矩阵,按照棒棒糖顺时针旋转,得到一个数组,打印该数组问题分析设置一个访问过数组,一个大循环内套4个小循环,分别是上,右,下,左。大循环条件是长度等于矩阵元素数量。其他力扣这个就是模拟,搞清楚就可以了。链接class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int&g

2021-10-06 13:08:57 80

原创 剑指 Offer 14- I. 剪绳子【力扣】

题意理解给定一个绳子,长度为n, 将它剪成任意小段,求小段长度乘积最大的剪法。问题分析用动规dp[i] 表示 i长度的绳子最大乘积。dp[0] = dp[1] = 1; 0 <= i <= n那么dp[i] = max(j * (i - j), j * dp[i - j]); 1 <= i <= j;其他力扣选取递归子结构始终是动规最难的部分。链接class Solution {public: int cutt...

2021-10-06 11:24:15 62

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

题意理解将二叉搜索树变成线索二叉树,双向链表连接。问题分析复杂的链表节点操作。其他力扣2021/10/4: 问题解决,一纸一笔一橡皮,半粗半细半投机链接/*// Definition for a Node.class Node {public: int val; Node* left; Node* right; Node() {} Node(int _val) { val = _val; le

2021-10-04 09:32:48 70

原创 剑指 Offer 68 - II. 二叉树的最近公共祖先【力扣】

题意理解求二叉树的最近公共祖先问题分析这题挺难的,好好想想先。其他力扣链接/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class So

2021-10-01 09:49:49 62

原创 剑指 Offer 64. 求1+2+…+n【力扣】

题意理解求1+2+...+n和,要求不用乘除,while,if,else,switch,case,条件表达式,问题分析不用这些,需要考虑那些可以替换,加减,逻辑表达式短路性质。n && n += sum(n-1);其他力扣链接class Solution {public: int sumNums(int n) { n && (n += sumNums(n-1)); return n; }.

2021-10-01 08:46:23 67

原创 剑指 Offer 45. 把数组排成最小的数【力扣】

题意理解给定一个正整数数组,问排列拼在一起拼成一个大数,求最小的数。问题分析排序,比较算法需要根据题意设计。通过两个数正拼反拼,比较出结果。越小排靠前。其他算法思路,全局排序和两两排序。可以移植同样的规则。减少打开规则分析的工作量。投机一波。力扣https://leetcode-cn.com/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/solution/mian-shi-ti-45-ba-shu-zu-pai-cheng-z

2021-09-28 11:12:31 76

原创 剑指 Offer 10- I. 斐波那契数列【力扣】

题意理解fn+1=fn+fn-1问题分析递归慢。常规的用动规,时间复杂度on;用快速幂,时间复杂度olgn。其他力扣链接动规class Solution {public: int fib(int n) { if (n == 0) return 0; if (n == 1) return 1; long c = 1e9+7; // long a = fib(n-1) % c; // long

2021-09-20 17:22:33 125

原创 剑指 Offer 63. 股票的最大利润【力扣】

题意理解给出一组数字,选出两个数,两个数前小后大,最大差值是多少问题分析动规思想大问题转成小问题,小问题逐步扩大。这题考虑前n个数最大利润怎么计算,记录前n个数的最小值,计算最小值和当前值的差值就是当前的最大差值。其他链接力扣https://leetcode-cn.com/problems/gu-piao-de-zui-da-li-run-lcof/solution/gu-piao-de-zui-da-li-run-by-leetcode-sol-0l1g/class So

2021-09-20 09:35:47 98

原创 剑指 Offer 26. 树的子结构【力扣】

题意理解判断一个树下有没有另一个树问题分析用递归。子结构是当前节点为根是否相同。其他难力扣链接/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * };

2021-09-19 21:03:13 78

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

题意理解按照层次从上到下打印二叉树问题分析用队列,通过队列长度限制读取的范围,保障二叉树打印效果。其他0919:勿自暴勿自弃圣与贤可训至链接/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL),

2021-09-19 17:04:22 64

原创 【力扣】剑指 Offer 58 - II. 左旋转字符串

题意理解给定一个字符串,长度为cnt,指定数字n,移动前n个字符到末尾,输出移动后的字符串问题分析通过3次调换实现第一次是前后调换第二次是调换前cnt-n个字符,调换后n个字符。即可完成。难点是:调换需要指定中间位置,以及对调的位置。花了好长时间。头疼。其他链接class Solution {public: string reverseLeftWords(string s, int n) { int cnt = s.size();

2021-09-15 10:31:33 77

原创 【力扣】1996. 游戏中弱角色的数量

题意理解给定一个二维数组,n*2,每行有前后两个元素,问,对于每行,如果存在一行,前后两个元素都比它大,那么就算一个,统计总个数。问题分析用到排序用到要给推理:就是按照第一个元素从大到小排序,当第一个元素相同,按照第二个元素从小到大排序,这样当第二个元素比最大的第二个元素小,说明前面出现了要求的元素,算一,反之,更新最大的第二个元素为当前第二个元素。其他力扣链接class Solution {public: int numberOfWeakCharacters(v

2021-09-14 22:48:25 109

原创 LCS 03. 主题空间【力扣】

题意理解有n个人做2n道题,每道题属于一种知识类型,问n个人最少做的题型有几种?问题分析贪心法其他链接

2021-07-03 18:08:08 118

原创 LCS 02. 完成一半题目【力扣】

题意理解有n个人做2n道题,每人只做一道题,每道题属于一种知识类型,问n个人最少做的题型有几种?问题分析贪心法要想遇到的知识类型最少,那么选择的题同知识类型越多越好。所以对2n题的知识类型计数,知识类型数量越多的题先选,直到选满n即可。其他模拟题,知识类型的编号看成知识类型的数量所以百思不得其解。链接class Solution {public: int halfQuestions(vector<int>& questions) { .

2021-06-27 17:15:38 152

原创 LCS 01. 下载插件【力扣】

题意理解下载插件,每分钟下载一个插件,每分钟可选策略有两个,一个是当前速度下载;一个是速度加倍同时后面下载速度都按新速度来。问下载n个插件最少需要几分钟?问题分析模拟+贪心题意比较绕,需要多解释下,对于当前一分钟来看,可以按照当前速度下载,也可以当前一分钟不下载只加倍再到下一分钟下载。所以思路是贪心,看看剩余插件数是不是小于速度的2倍,小的话就按当前速度下载。其他此题花的时间比较长,是因为加速时候需要一分钟,而且加倍可以翻番加倍。理解力啊。链接class Solution

2021-06-26 11:26:46 141

原创 5. 最长回文子串【力扣】

题意理解给定一个字符串,找出最长回文子串。问题分析用动规,思路是从每个字符开始递推,每次字符长度+1,判断回文的时候和之前的子串掐头去尾后剩下的子串关联起来,形成状态转移方程。其他本题的变化在于,动规的起点是多个,逐步扩展。注意这个思路的学习。链接class Solution {public: string longestPalindrome(string s) { int len = s.size(); if (len == 1) r

2021-04-25 22:54:52 102

原创 79. 单词搜索【力扣】

题意理解给定一个矩阵,矩阵是字母组成,对于一个字符串,找到一条字母组成的路径,使得字符串等于路径。问题分析回溯法设计回溯函数,要点是记得有一棵树,回溯是在树上做先序遍历。树的节点是状态变量,树的边是可选的取值,函数设计方法是1. 函数参数包括状态变量,树的可选取值集2.函数体分为两部分:1. 终止条件; 2. 递归条件;3.对于递归的数据,设计时当成黑盒,已经实现了,然后判断已经实现情况下如何后续处理。4. 复杂回溯逻辑设计扣的很细,每一步干什么,要处理什么事情,都要明确,整

2021-03-08 20:33:55 123

原创 78. 子集【力扣】

题意理解给定一个数组,求它的全部子集问题分析用回溯法待学习其他https://leetcode-cn.com/problems/subsets/链接class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>> ans; vector<in

2021-02-28 22:11:40 85

原创 42. 接雨水【力扣】

题意理解给定高低不均匀的一组柱子高度,计算下雨后可以接住的雨水数量。问题分析用栈。思路还是放在入栈和出栈上。如果是下降,那么直接入栈。如果是上升,开始处理接住的雨水数量。每上升一次,计算接住的数量,一层一层往上累加其他https://leetcode-cn.com/problems/trapping-rain-water/submissions/此题甚难,明白了练好算法是要花时间的,如果喜欢,花再多的时间也愿意啊。链接class Solution {publi

2021-02-16 22:09:43 77

原创 1752. 检查数组是否经排序和轮转得到【力扣】

题意理解判断一个数组是否是排序或是轮转。问题分析分析规律,方向是前后位置大小,第一个和最后一个比较大小其他https://leetcode-cn.com/problems/check-if-array-is-sorted-and-rotated/链接class Solution {public: bool check(vector<int>& nums) { if (nums.size() == 0) return true;

2021-02-13 09:04:56 158

原创 20. 有效的括号【力扣】

题意理解给出()[]{}三种括号字符串,判断是否有效,两两配对成功。问题分析用栈,思路整理:1. 考虑两个方向的处理,一个入栈如何操作,一个出栈如何操作。2. 考虑用map做字典,减少复杂if-else处理。其他https://leetcode-cn.com/problems/valid-parentheses/链接原始解法:class Solution {public: bool isValid(string s) { stack<

2021-02-10 09:17:26 66

原创 155. 最小栈【力扣】

题意理解设计一个栈类,支持常量时间取栈内最小值问题分析本题解法很多,选取的解法的一个点值得借鉴:空间换时间,开辟一个最小栈与原栈同步,最小栈内放入最大值,避免每次操作判断栈内有没有元素。其他链接https://leetcode-cn.com/problems/min-stack/class MinStack {public: /** initialize your data structure here. */ MinStack() { ..

2021-02-10 08:23:22 104

原创 【力扣】21. 合并两个有序链表

题意理解:合并两个有序链表l1,l2,合并后的链表有序。问题分析设合并是函数f,那么合并后的链表l3 = f(l1,l2)。l3 = f(l1,l2) = 当l1[0] < l2[0]时,l3 = l1[0] + f(l1[1:], l2); 其他, l3 = l2[0] + f(l1, l2[1:]).递归式如上。非递归情况:用了哑指针,和双指针法处理。其他https://leetcode-cn.com/problems/m...

2021-02-08 22:25:03 85

原创 kafka笔记

简介event streamingcentral nervous system 中枢神经系统event streaming is the practice of capturing data in real time from event sources likedatabases,sensors,mobile devices,cloud services, and software applications in the form of streaming of events;storing t

2021-02-02 22:31:57 648

原创 【力扣】58. 最后一个单词的长度

题意理解给定一个仅包含大小写字母和空格' '的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。问题分析字符串处理,倒遍历,注意区分第一个空和结束时的空。其他https://leetcode-cn.com/problems/length-of-last-word/链接class Solution {publi...

2021-01-28 22:03:32 130 1

原创 【力扣】1694. 重新格式化电话号码

题意理解给你一个字符串形式的电话号码 number 。number 由数字、空格 ' '、和破折号 '-' 组成。请你按下述方式重新格式化电话号码。首先,删除 所有的空格和破折号。其次,将数组从左到右 每 3 个一组 分块,直到 剩下 4 个或更少数字。剩下的数字将按下述规定再分块:2 个数字:单个含 2 个数字的块。3 个数字:单个含 3 个数字的块。4 个数字:两个分别含 2 个数字的块。最后用破折号将这些块连接起来。注意,重新格式化过程中 不应该 生成仅含 1 个数字的块,并且

2021-01-28 21:39:08 162

空空如也

空空如也

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

TA关注的人

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