自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

刘心芝士小蛋糕的博客

我是会敲代码的甜妹

  • 博客(118)
  • 收藏
  • 关注

原创 力扣剑指offer31天刷题计划---day1 栈与队列

剑指 Offer 09. 用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )/*解题思路:AB两栈:A实现入队功能,B实现出队功能入队:加入栈A中即可出队: - 栈B为空时,栈A也为空,返回-1 - 栈B为空,A不为空时,执行倒序,将a中的元素倒叙给b,删除b的栈顶元素即可 - 栈B不为

2022-03-29 15:38:58 228

原创 力扣14天 [算法] 刷题:第2、3、4、5天(双指针)

第二天977. 有序数组的平方class Solution {public: vector<int> sortedSquares(vector<int>& nums) { // //方法一:先平方再排序 // vector<int> ans; // for(int num : nums) { // ans.push_back(num * num); // }.

2022-02-11 11:04:43 311

原创 力扣14天 [算法] 刷题:第1天(二分查找)

704.二分查找class Solution {public: int search(vector<int>& nums, int target) { //遍历数组 // for(int i = 0; i < nums.size(); i++){ // if(nums[i] == target){ // return i; // } // }

2022-02-10 14:06:22 305

原创 Typora去除红色波浪线

如图所示文件—偏好设置—编辑器—拼写检查—不使用拼写检查

2021-11-09 19:22:16 197

原创 力扣刷题75:颜色分类C++

解题思路1.两个指针:头和尾--->p0和p22.遇到0,跟p0进行交换,p0和i都往前+1走,p0之前肯定是保证顺序正确3.遇到2,跟p2进行交换,p2往回-1走,i停一轮是为了检测当前被换过来的数字,直到i和p2相遇,说明结束了代码class Solution {public: void sortColors(vector<int>& nums) { int n = nums.size(); int p0 = 0,p2 =

2021-09-15 20:03:32 219 3

原创 力扣刷题179:最大数C++

解题思路1.排序2.不相同数字开头的,依次比较高位3.相同数字开头的,比较两个数不同排列后的大小代码class Solution {public: string largestNumber(vector<int>& nums) { //自己定义的排序 sy * x + y > sx * y + x sort(nums.begin(),nums.end(),[](const int &x,const int &y){

2021-09-13 20:03:53 156

原创 力扣刷题56:合并区间C++

解题思路用一个二维数组存储最终答案1.如果当前区间的左端点小于最后一个区间的右端点,则表示有重合部分, 比较两个区间的右端点,将右端点置为二者间的最大值2.如果当前区间的左端点大于最后一个区间的右端点, 则表示没有重合部分,直接将区间加入二位存储数组中代码class Solution {public: vector<vector<int>> merge(vector<vector<int>>& intervals) {

2021-09-06 10:09:01 220

原创 力扣刷题299:猜数字游戏C++

解题思路两次遍历统计两种情况:1.A---数字对位置对 公牛2.B---数字对了但位置不对的个数=数字对-数字对且位置对 奶牛第一种比较好统计,只要对比位置上的字符就好第二种把遍历第一个字符串中的字符与出现的次数存放在哈希表中,然后再遍历另一个字符串,每遍历一个字符在哈希表中寻找如果找得到就对这个字符所对应的次数减一,然后再把统计数字加一代码class Solution {public: string getHint(string secret, string gue

2021-08-25 10:02:35 338

原创 力扣刷题380:O(1) 时间插入、删除和获取随机元素C++

解题思路利用动态数组的下标索引实现常数时间内的插入和随机元素的访问,再利用哈希表实现常数时间的删除操作:将删除元素和最后一个元素交换,将最后一个元素删除代码class RandomizedSet {private: unordered_map<int,int> hash;//哈希实现删除 vector<int> v;//动态数组实现插入和随机访问public: /** Initialize your data structure here. */

2021-08-17 11:21:08 197

原创 力扣刷题73:矩阵置零C++

解题思路原地算法:输出结果覆盖输入结果,不额外开辟内存和空间具体步骤:1.使用两个标记量记录首行首列是否需要置零2.扫描非首行首列的置零信息3.回过头来将根据标记量将首行首列是否置零代码class Solution {public: void setZeroes(vector<vector<int>>& matrix) { int m = matrix.size();//行 int n = matrix[0].size

2021-08-16 16:28:01 161

原创 力扣刷题128:最长连续序列C++

解题思路要求时间复杂度为 O(n),所以不能用sort如果有一个x, x+1, x+2, x+y的连续序列,我们只会以x为起点向后枚举,而不会从x+1,x+2,向后枚举。因此判断x-1存在即可。1.定义一个哈希表hash,将nums数组中的数都放入哈希表中。2.遍历哈希表hash,如果当前数x的前驱x-1不存在,我们就以当前数x为起点向后枚举。3.枚举到了数y,连续序列长度为y-x+1。4.更新答案。代码class Solution {public: int longestC

2021-08-16 15:19:31 166

原创 力扣刷题1:两数之和C++

解题思路两边遍历,返回数组下标代码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++){//从第二个元素开始遍历第二遍

2021-08-16 14:12:23 155

原创 力扣刷题146:LRU 缓存机制C++

解题思路双链表+哈希:双链表存储一个节点被使用(get或者put)的时间戳,且按最近使用时间从左到右排好序,最先被 使用的节点放在双链表的第一位,因此双链表的最后一位就是最久未被使用的节点哈希表存储key对应的链表中的节点地址,用于key-value 的增删改查;双链表和哈希表的增删改查操作的时间复杂度都是 O(1),所以get和put操作的时间复杂度也都是O(1)代码class LRUCache {public: //定义双链表 struct Node{

2021-08-16 13:58:14 163

原创 力扣刷题350:两个数组的交集 IIC++

解题思路1.哈希表存储这个数字出现的次数2.遍历第一个数组,哈希表记录每个数字和他出现的次数3.遍历第二个数组,如果哈希表中存在这个数字,把这个数字记录在答案中,并减少哈希表中该数字出现的次数4.为了降低空间复杂度,先遍历短的数组count()方法返回值是一个整数,1表示有这个元素,0表示没有这个元素代码class Solution {public: vector<int> intersect(vector<int>& nums1, vector&

2021-08-13 20:01:21 154

原创 力扣刷题1209:删除字符串中的所有相邻重复项 IIC++

解题思路用一个栈来计数,数字不同时,栈中压1,相同时给栈顶元素加1代码class Solution {public: string removeDuplicates(string s, int k) { stack<int> count;//计数栈 for(int i = 0;i < s.size();i++){//遍历字符串 if(i == 0|| s[i] != s[i - 1]){//第一个值没办法和前值判断,

2021-08-13 17:23:44 267

原创 力扣刷题735:行星碰撞C++

解题思路1.正右左负2.使用整数数组,左正右负才会发生碰撞碰撞分三种情况: 容器尾的值大于要进入数值的绝对值时,表示为新值=0;新行星被老行星吸收了 容器尾的值等于要进入数值的绝对值时,表示为弹出尾部的值,新值=0;两个行星抵消了 容器尾的值小于要进入数值的绝对值时,表示为弹出尾部的值,保存新值; 新行星把老行星吃掉了代码class Solution {public: vector<int> asteroidCollision(vector<int>

2021-08-13 16:54:42 327

原创 力扣刷题227:C++基本计算器 II

解题思路1.使用容器,保存符号运算后的数值,2.加减号直接存入3.乘除号与尾部元素计算后将其替换代码class Solution {public: int calculate(string s) { vector<int> v;//容器v来存储符号后的数值 char preSign = '+';//变量 preSign 记录每个数字之前的运算符,对于第一个数字,其之前的运算符视为加号 int num = 0;// 保存当前数字

2021-08-13 15:41:12 192

原创 力扣刷题150:逆波兰表达式求值C++

解题思路逆波兰表达式:1.需要一个栈存储操作数,遇到操作数把它入栈2.遇到操作符,把数出栈,右操作数先出,左操作数后出,运算后再入栈atoi()函数的功能:将字符串转换成整型数;atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时(’\0’)才结束转化,并将结果返回(返回转换后的整型数)。c_str():Borland封装的String类中的一个函数,它返回当前字符串的首字符地址代码class Solution {pub

2021-08-13 13:53:08 205

原创 力扣刷题54:螺旋矩阵C++

解题思路1.确定上下左右四条边,初始化时:上边界是0,下边界是m-1,左边界是0,右边界是n-12.while循环,先遍历上边界,结果存入,上边界大于下边界跳出循环3.遍历其余三个方向,道理同上代码class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { if(matrix.empty() || matrix[0].empty

2021-08-13 09:33:35 206

原创 力扣刷题33:二分查找 搜索旋转排序数组C++

解题思路局部有序,同样可以使用二分查找将数组一分为二,其中一定有一个是有序的,另一个可能是有序,也能是部分有序。此时有序部分用二分法查找。无序部分再一分为二,其中一个一定有序,另一个可能有序,可能无序。就这样循环。具体思路:1.找一个中值mid把数组分成[left,mid][mid+1,right]两部分,肯定有一部分是有序的;2.如果左边是有序的,目标值小于等于num[0]且小于中值时,说明目标值在这段有序数内,右边界 为mid - 1,否则在另一端left = mid + 13.如

2021-08-12 17:27:07 165

原创 力扣刷题35:二分查找 搜索插入位置C++

解题思路要求时间复杂度为O(logn),空间复杂度为O(1),明显是二分查找1.二分查找2.找中值,进行左右判断代码class Solution {public: int searchInsert(vector<int>& nums, int target) { int len = nums.size();//数组大小 int left = 0;//数组左边界 int right = len - 1;//数组右边界

2021-08-12 15:25:38 107

原创 力扣刷题2:两数相加C++

解题思路1.定义一个预先指针,指针的下一个结点指向头节点;2.需要考虑到进位3.全部遍历完后,进位值为1,在新链表最前方添加结点1代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next

2021-08-12 14:46:57 180

原创 力扣刷题1472:设计浏览器历史记录C++

解题思路:1.数组只用来做存储2.给栈定义一个访问指针3.通过访问指针进行快速跳转和数据删除代码:class BrowserHistory {public: int pos = -1;//定义访问栈的指针 int top = 0;//定义栈顶 string history[5001];//定义大小为5001的一维数组 BrowserHistory(string homepage){//用主页初始化浏览器 visit(homepage);//可以

2021-08-12 13:51:01 279

原创 力扣刷题148:归并对链表排序c++

解题思路:1.先分割:寻找链表中点,将链表分成两个子链表,中点用快慢指针找,慢指针走一步,快指针走两步,慢指针到中点时,快指针到末尾,2.再合并对列表排序,合并两个排好序的列表代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * List

2021-08-11 16:22:43 100

原创 力扣刷题743:最短路径求网络延迟时间c++

解题思路核心思路还是贪心算法,先求局部最优,源点到第一个节点的最短路径,依次求下一个节点的最短路径1.用二维数组遍历存储邻接结点边信息2.定义结点到源点的距离数组3.从源点出发第一遍遍历找源点的第一个最近节点4.找到一个节点后找这个节点的下一个最近节点class Solution {public: int networkDelayTime(vector<vector<int>>& times, int n, int k) { con

2021-08-10 20:06:57 238

原创 力扣刷题455:排序加贪心:分饼干c++

解题思路:目标是让尽可能多的孩子吃饱,那就用最小的饼干先让饭量最小的孩子吃贪心算法:不从整体考虑,求得局部最优解class Solution {public: int findContentChildren(vector<int>& g, vector<int>& s) { //目标是让尽可能多的孩子吃饱,那就用最小的饼干先让饭量最小的孩子吃 //g[i]:小孩数组 s[i]:饼干数组 从第一个孩子开始,保证吃饱

2021-08-10 17:32:26 175

原创 力扣刷题225:双队列实现一个栈

解题思路两给队列实现一个栈, 一个作为主队列,一个作为辅助队列保证辅助队列是空队列class MyStack { /* 栈是一种后进先出的数据结构,元素从顶端入栈,然后从顶端出栈。 队列是一种先进先出的数据结构,元素从后端入队,然后从前端出队。 */public: //两给队列实现一个栈,定义两个队列 queue<int> queue1; queue<int> queue2; /** Initialize y

2021-08-10 17:05:53 159

原创 力扣刷题102:二叉树的层序遍历

题目描述:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层序遍历结果:[ [3], [9,20], [15,7]]/** * Definition for a binary tree node. * struct TreeNode { * int val; node

2021-08-09 19:57:30 174

原创 《白鹿原》电视剧观后感

随便说说自从高中毕业貌似就没写过观后感这种东西了,回忆下以前都是怎么写的,好像是先简单描述自己印象最深的情节,然后结合自身生活经历和感悟谈谈。随便说说吧,77集电视剧,确实还蛮长的,有的是看过一遍就忘了,也不知道还记得哪些东西,那就从人物开始写吧,好像会好展开一点。都是我自己的理解,很有可能理解的很不到位,忘了从啥时候开始,看剧看电影需要看影评了,要不然都只理解些表面。白嘉轩:一个族长,一个家长,一个丈夫,一位父亲,一个老师,一辈子念着自己脚下的土地,照顾着一族人,希望大家都过得好,以德报怨,以自己的

2021-06-08 16:58:06 566 2

原创 21年不定期更新的随笔--3月15日

距离上一次写随笔过去了半年,开始了一个新的年头,今年要更勤奋、阳光、热闹亿点点,可可爱爱没有脑袋。1.关于论文小论文跌跌撞撞算是结束了,去年四月的时候还在纠结难受小论文写不出来,初稿做不出来,仿真更完成不了,对自己这个方向的概念甚至都不是很清楚,看论文基本扫盲和知识普及阶段。现在已经到了大论文快进入了收尾工作,还有差不多两到三周的时间,大论文就要全部完成,被送去盲审,在研究生阶段最大的事情就算结束了,剩下的就是毕业答辩和自由学习时间。感觉时间过得超快,期待开学赶紧毕业,又不想开学经历这一系列的答

2021-02-19 11:20:58 94 1

原创 2020-11-30《笑场》书摘

未曾开言我先笑场笑完了听我诉一诉衷肠“师父,我觉得,人生在世,归根结底靠的就是三样,随大流,碰运气、勤奋,占上两样就能过得不错。”“澈丹,为师让你学法,让你修觉悟,让你证无上正等正觉,你怎么净总结这种庸俗哲学处世智慧?你有个僧人的样儿行吗?”“你不也老说吗?”“我已经老了,你跟我比什么?”“没有朋友多孤独啊”“有了也一样”“师傅,你知道我在想什么吗?”“昨天内个女施主”“你怎么知道?”“我也在想”“师父,我们是不是不够淡泊啊”“是”“你回答的还真痛快…”“师父,可我觉得淡泊名.

2020-11-30 21:49:49 168

原创 hexo+github个人博客简易快速上手

在这个过程中无论任何报错和失误都不要怕,面向百度可以解决一切问题,百度不能解决的都是自己没查到位的,hexo+github搭建博客已经相对完善,解决方法也相对成熟,跟着前辈走总会有肉吃。1.部署环境1.安装node.jshttps://nodejs.org/en/下载好了之后一路next,无脑安装即可。2.打开万能小黑窗,看node是否安装好。3.先安装一个cnpm一个国内镜像源npm install -g cnpm --registry=https://registry.npm.taob

2020-07-28 21:21:13 197 2

原创 个人博客搭建过程错误总结

1.cnpm : 无法将“cnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称分析:两种可能:一种是没有全局安装,一种是全局安装目录没有加入系统环境变量Path中,如果不指定npm默认安装目录,那就是安装到C:\Users\ 用户 名\AppData\Roaming\npm。解决:检查cnpm -v 是否安装了cnpm如果没有安装: 执行下面命令npm install -g cnpm --registry=https://registry.npm.taobao.org安装以

2020-07-08 21:45:57 248

原创 权限管理系统错误总结

1.Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.分析:数据库配置出问题,pom中引入了mybatis,引入mybatis后就会加载需要的数据源,找对应的数据源配置就要初始化数据库连接池,这里没找到所以报错解决:加上数据源配置,建一个file文件,application.yamlserver: port: 8081

2020-07-01 16:30:20 491

原创 数据库错误总结笔记

1.连接时出现错误号码2003, Can’t connect to MySQL server on ‘localhost’ Can’t connect to MySQL server on ‘localhost’分析:MySQL服务没有启动,只需要启动MySQL服务就可以解决:小黑窗打开输入:net start MySQL,但是输入命令后仍然出现错误;出现错误提示为“发生系统错误 5。拒绝访问。”这个问题的原因是没有以管理员身份运行CMD,于是重新以管理员身份启动CMD,启动成功。...

2020-06-30 10:13:03 199

原创 JavaSE基础思维导图(1)

1.java诞生从1972年的c开始,到现在的java,还有哪些需求促进了Java的诞生,java的成长和新特性,开发环境和运行机制。2.入门1.注释2.标识符3.数据类型4.变量5.运算符

2020-06-01 18:01:23 222

原创 计算机网络编程思维导图

总:分:1.网络编程基础2.网络通信间的要素

2020-05-31 18:14:12 249

原创 Linux基础(一)---文件、用户、权限管理

1.文件管理2.用户管理3.权限管理4.进程管理5.网络管理6.软件管理7.磁盘管理8.服务管理1.文件管理整个根就是一个倒树装的形态,目录结构:这些都是根目录,尽量不要动,在整个linux里面,目录也是文件类似于windows中文件夹的东西在linux中叫目录linux是一个倒树型结构linux最大的目录是"/"根目录"/"目录中的二级目录多为系统在安装过程中建立的...

2020-03-24 10:43:04 211

原创 linux小白安装和中途的小插曲

1、软件安装2、新建虚拟机 3、安装操作系统4、快照5、克隆6、网络配置这次安装的是红帽7,在windows下安装linux系统,在安装软件之前要先安装vc依赖,可以在网站下载最新版,还要下载镜像。本文记录第一次安装linux从无到有,到最后的可以在虚拟机中上网。在虚拟机安装之前,要先安装vc_redist.x64.exe!!!。1、软件安装我安装的是:VMware Works...

2020-03-19 17:56:48 205

原创 springboot从入门到进阶

1、Hello,SpringBoot2、SpringBoot原理3、SpringBoot整合MyBatis4、SpringBoot集成页面5、Thymaleaf模板传值6、Springboot开发Web项目 1、Hello,SpringBootspring发展有三个阶段:Servlet + jsp :原生开发,十分的麻烦,web.xml 或者代码中都会存在大量重复内容;Sp...

2020-03-10 21:37:32 315

空空如也

空空如也

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

TA关注的人

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