自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis中的事务

redis事务的基本概念和一些特性

2022-07-11 14:28:16 293 1

原创 Swagger简单入门

swagger快速上手

2022-06-07 22:36:43 348

原创 leetcode-201:数字范围按位与

leetcode-201:数字范围按位与链接数字范围按位与分析首先我们先查看数据范围 [0-231-1],数据范围很大,这个时候我们可以初步判定时间复杂度是O(1) or O(logn)级别logn级别的复杂度一般是二分,嗯…想了一下,没什么好的思路,就从O(1)开始考虑吧.既然答案是二进制与,那么我们不妨从二进制角度来考虑.将left和right转化为二进制之后,突然发现了一个显而易见的规律,如果l和r的二进制位不一样,那么结果一定是0,为什么呢?对于任意一组二进制位不同的left和ri

2022-01-10 00:18:57 3931

原创 leetcode-5:最长回文子串

leetcode-5:最长回文子串链接最长回文子串分析我们枚举回文子串的中心,然后搜索向两边的最大延申长度,同时维护答案.codeclass Solution {public: string longestPalindrome(string s) { string res; int n = s.size(); for (int i = 0; i < n; i ++) { // 枚举长度为奇数的回文子串

2022-01-08 23:36:48 3718

原创 王道-操作系统-第一章

王道-操作系统-第一章1.概念、功能、目标熟悉的操作系统windows/linux/macos/ios/Android1.1 概念层次结构定义1.2 功能和目标作为系统资源的管理者进程是一个程序执行的过程.执行前需要将该程序放到内存中,才能被CPU处理.作为用户和计算机硬件之间的接口联机命令接口又称交互式命令接口脱机命令接口又称批处理命令接口系统调用=系统调用命令=广义指令作为最接近硬件的层次实现对硬件机器的拓展

2022-01-06 22:24:03 1294

原创 王道-计算机网络-应用层

王道-计算机网络-应用层1.网络应用模型1.1 概述1.2 网络模型客户/服务器模型P2P模型2.DNS域名系统将域名解析成IP地址2.1 域名2.2 域名服务器根域名服务器/顶级域名服务器/权限域名服务器/本地域名服务器优先请求本地域名服务器域名解析过程递归查询(靠别人)迭代查询(靠自己)3.文件传送协议FTP3.1 FTP服务器和用户端3.2 FTP工作原理FTP传输模式4.电子邮件4.1 概述电子邮

2022-01-05 21:53:50 945

原创 王道-计算机网络-运输层

王道-计算机网络-运输层1.概述只有主机才有的层次运输层为应用层提供通信服务,使用网络层的服务.功能提供进程与进程之间的逻辑通信复用和分用对收到的报文进行差错检测传输层的两种协议1.1 传输层的两种协议1.2 传输层的寻址和端口套接字2.UDP协议2.1 概述UDP只在IP数据报上添加了很少的功能,即复用分用和差错检测功能特点2.2 首部格式 分用时,找不到对应的目的端口,就丢弃报文,并给发送方发送ICMP"窗口不可达"差错报告报文

2022-01-05 15:54:02 1096

原创 王道-计算机网络-网络层

王道-计算机网络-网络层1.概述主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务.网络层的传输单位是数据报分组是数据报的片段.功能路由选择和转发 (最佳路径)异构网络互联拥塞控制若所有节点都来不及接受分组,要丢弃大量分组,网络就处于拥塞状态.要采取一定的措施来环节这种拥塞.方法:开环控制(静态)和闭环控制(动态)2.数据交换方式网络层的核心设备是路由器为什么需要数据交换?电路交换报文交换分组交换数据报交换虚电路交

2022-01-05 00:40:02 464

原创 leetcode-146:LRU缓存

leetcode-146:LRU缓存链接LRU 缓存分析实现一个最近最少使用的数据结构.同时要求get和put都是常数复杂程度.首先我们先来考虑如何在O(1)时间内获取.显而易见,要想在O(1)时间内获取对应的数据,我们需要用的哈希表,哈希表可以O(1)时间内获取对应key值的val.再然后就是考虑如何判断出最近最少.这个我们使用双链表来维护.每当我们对一个数进行操作之后,就将它添加到链表的头部,这样链表的尾部就是最近最少使用的节点.code & 注释class LRUCache

2022-01-04 09:26:39 387

原创 大三寒假flag

大三寒假flag计算机基础王道计算机网络王道操作系统阅读《图解TCP/IP》阅读《图解HTTP》中间件学习Redis学习MQ阅读《Redis设计与实现》如果有机会就深入了解MQJava基础JDK源码学习宋红康JVM视频阅读《深入理解Java虚拟机》阅读《Java并发编程实战》重读《Java核心技术卷一》尝试学习JUC源码项目小而美博客挑战杯项目—练手数据库深入学习数据库原理学习数据库高级操作重新复习数据库基础算法复习基础课做题

2022-01-02 21:31:49 642

原创 王道-计算机网络-数据链路层

王道-计算机网络-数据链路层主要内容链路层的功能链路层的两种信道局域网,广域网链路层的设备1.一些基本概念结点主机和路由器链路网络中两个结点之间的物理通道,链路的传输介质主要有双绞线,光纤,和微波.分为有线链路和无线链路.数据链路网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成了数据链路.帧链路层的协议数据单元,封装网络层数据报.数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报.

2022-01-02 10:57:34 884

原创 leetcode每日一题-110:平衡二叉树

leetcode每日一题-110:平衡二叉树链接平衡二叉树题目分析遍历树,然后每次判断树的左右两个子树的差值即可。代码C++/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nul

2021-11-28 18:04:53 4279 1

原创 leetcode每日一题-21:合并两个有序链表

leetcode每日一题-21:合并两个有序链表链接合并两个有序链表题目分析我们设置一个虚拟头节点和新链表的尾节点,然后一直遍历两个链表,往新链表尾节点后面插入即可。代码C++/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} *

2021-11-27 20:57:59 473 1

原创 leetcode每日一题-49:字母异位词分组

leetcode每日一题-49:字母异位词分组链接字母异位词分组题目分析不同的字母字节分组是比较难的,但是我们可以对每个字符串转化到一个中间态,然后根据中间态进行分组就容易了许多,接下来的问题是如何定义中间态,我们定义字符串中字符从小到大排列是中间态。代码C++class Solution {public: vector<vector<string>> groupAnagrams(vector<string>& strs)

2021-11-25 19:08:32 458 3

原创 leetcode每日一题-423:从英文中重建数字

leetcode每日一题-423:从英文中重建数字链接从英文中重建数字题目分析首先我们先分析每个字母的组成,然后发现一些字符只在一个单词中出现,我们先去统计一下这些单词个数。z,w,u,x,g都只出现在一个数字中,也就是0,2,4,6,8,我们用哈希表统计一下s字符串中各个字符的数量,就可以知道0,2,4,6,8的数量,然后我们注意一下只在两个数字中出现的字符。h 只在 3,8 中出现。由于我们已经知道了 8 出现的次数,因此可以计算出 3 出现的次数。f 只在 4,5 中出现

2021-11-24 12:41:40 4779 2

原创 leetcode每日一题-859:亲密字符串

leetcode每日一题-859:亲密字符串链接亲密字符串题目分析题目本身不是很难,但是有不少需要注意的地方,逐一来进行分析。首先如果两个字符串不一样长,那么肯定是false。然后考虑长度相等的情况,如果s和goal刚开始就一样答案是什么呢?如果是类似于ab,ab这种类型的,那么也是false,因为这种交换之后一定就不相等了;如果是aa和aa这种,在一些对应位置有相同的元素,那么交换后是true。在来考虑值不相等的情况,首先从前往后遍历找到第一个不一样的位置下标,然后从后往前遍历找到最后一

2021-11-23 14:50:29 4538 1

原创 leetcode每日一题-559:N叉树的最大深度

leetcode每日一题-559:N叉树的最大深度链接N 叉树的最大深度题目分析简单的搜索题目。只需要从根节点开始dfs一下整个N叉树就可以得到答案了。主要是对dfs要理解和掌握N叉树的遍历。代码C++/*// Definition for a Node.class Node {public: int val; vector<Node*> children; Node() {} Node(int _val) {

2021-11-21 15:24:43 2306 4

原创 leetcode每日一题-594:最长和谐子序列

leetcode每日一题-594:最长和谐子序列链接最长和谐子序列题目分析因为最大值和最小值差值为1,那么这个序列中就只能存在两种类型的数字。遍历数组每次以当前值为最小值,查询当前值加1的值的数量是多少,两种类型的数字之和就是一个和谐序列的长度。那么我们如何快速获得x+1的数量呢,我们可以先用哈希表存储每中类型数字的数量,然后直接获取即可。代码C++class Solution {public: int findLHS(vector<int>&

2021-11-20 12:11:47 826 3

原创 leetcode每日一题-397:整数替换

leetcode每日一题-397:整数替换链接整数替换题目分析直接dfs枚举所有情况即可。代码C++class Solution {public: int res = INT_MAX; int integerReplacement(int n) { dfs(n, 0); return res; } // 这里用longlong是因为INT_MAX+1会爆int void dfs(long

2021-11-19 11:47:55 111 1

原创 leetcode每日一题-563:二叉树的坡度

leetcode每日一题-563:二叉树的坡度链接二叉树的坡度题目分析简单的dfs问题。首先明确思路,我们需要遍历每一个点,然后求出该点左右子树的值的总和,然后做差,答案累计这个差值即可。那么问题就转化到求每个节点左右子树值的综合上面,同样是一个dfs问题,但是这个问题有一个优化,我们在之后的代码部分进行详细的分析。代码C++/** * Definition for a binary tree node. * struct TreeNode { * int va

2021-11-18 18:19:25 2165 4

原创 leetcode每日一题-13:罗马数字转整数

leetcode每日一题-13:罗马数字转整数链接罗马数字转整数题目分析这个题总体上来说是一个遍历题目。我们遍历每一位看看当前字母应该转化成什么阿拉伯数字,唯一需要注意的就是题目中给出的三种特殊的双字符组合构成数据的方式,但是这也很容易处理,每次我们遍历到I,X,C,这个几个字母的时候,查看一下后方是不是相应的组合字符即可。然后累计所有值就是答案。代码C++class Solution {public: int romanToInt(string s) {

2021-11-17 10:15:03 138 2

原创 leetcode每日一题-191:位1的个数

leetcode每日一题-191:位1的个数链接位1的个数题目分析这是一个基础考察题目。首先根据已给代码,我们知道给的是一个无符号的32位整数,那么什么叫32位整数呢?我们都知道,现行的计算机都是二进制计算机,底层都是二进制,对于存储数据的每一个0或1,称之为一位(1bit),那么32位整数,其实就是由32位0或1组成的整数。这样了解之后,我们就可以比较轻松的解出题目了,只需要对每一个二进制位上的数据进行枚举即可,根据语言提供的位运算符号>>和&,我们就可以解决问题了

2021-11-16 21:21:45 1588 4

原创 leetcode每日一题-319:灯泡开关

leetcode每日一题-319:灯泡开关链接灯泡开关题目分析这里官方分析的很好,就直接采用官方的分析了代码C++class Solution {public: int bulbSwitch(int n) { return (int)sqrt(n); }};Javaclass Solution { public int bulbSwitch(int n) { return (int) Math.sqr

2021-11-15 16:52:58 1059 6

原创 leetcode每日一题-20:有效的括号

leetcode每日一题-20:有效的括号链接有效的括号题目分析这个题目是栈的经典应用。我们每次遇到右括号的时候将他加到栈中,每日遇到左括号的时候,取出栈顶(也就是和当前右括号距离最近的左括号),看看是否对应,如果此时栈顶不存在,也就说明右括号少于左括号,一定不合法,如果不匹配,那么也一定不合法。等遍历结束的时候,如果栈中还有元素剩余,那么说明右括号多于左括号,那么这也不合法。综上就可以判断出这个字符串是否合法了。代码C++class Solution {public:

2021-11-14 10:59:39 2123 5

原创 leetcode每日一题-520:检测大写字母

leetcode每日一题-520:检测大写字母链接检测大写字母题目分析模拟分析题,遍历一下字符串统计一下其中的大小写字母然后根据大小写字母的数量判断即可代码C++class Solution {public: bool detectCapitalUse(string word) { int n = word.size(); // 统计大写,小写字母的数量 int big = 0, little = 0;

2021-11-13 09:52:44 2139 4

原创 leetcode每日一题-14:最长公共前缀

leetcode每日一题-14:最长公共前缀链接最长公共前缀题目分析问题其实很简单,可以纵向遍历数组,然后找出来,但是有一种比较简单的办法,那就是对字符串数组进行排序,然后比较第一个和最后的一个的最长公共前缀就可以了,因为排序之后,数组中的最后一个字符串和第一个字符串是相差最大的字符串,相差最大的两个字符串求公共前缀,也一定是符合整个数组的.代码C++class Solution {public: string longestCommonPrefix(vector

2021-11-12 17:50:39 1556 1

原创 leetcode每日一题-7:整数反转

leetcode每日一题-7:整数反转链接整数反转题目分析题目不是很难,但是细节很多,并且不允许存储64位整数,需要考虑很多的东西.在之后的代码部分逐一分析.代码C++class Solution {public: int reverse(int x) { int f = 1; // 标记一下正数还是负数 if(x < 0) f = -1; int maxn = INT_M

2021-11-11 15:22:58 2228

原创 leetcode每日一题-495:提莫攻击

leetcode每日一题-495:提莫攻击链接提莫攻击题目分析从第二位开始枚举,每次判断和前一次的间隔是多少,然后判断出中毒的描述,遍历结束后,因为最后一次施加的中毒状态一定可以持续完整的中毒事件,所以最后再加上duration.代码C++class Solution {public: int findPoisonedDuration(vector<int>& timeSeries, int duration) { int re

2021-11-10 11:01:32 1155

原创 leetcode每日一题-58:最后一个单词的长度

leetcode每日一题-58:最后一个单词的长度链接最后一个单词的长度题目分析语法题,注意结尾的多空格即可代码C++class Solution {public: int lengthOfLastWord(string s) { string res = ""; for(int i=s.size()-1 ; i>-1 ; i--) { if(s[i] == ' ')

2021-11-09 21:26:24 376

原创 leetcode每日一题-299:猜数字游戏

leetcode每日一题-299:猜数字游戏链接猜数字游戏题目分析虽然是一个中等题,但是其实十分的简单.我们只需要先按照最小长度遍历一遍两个字符串的前缀,然后统计一下同位置并且数字相同的结果,然后把这些点标记一下,然后将secret中没有匹配的加入哈希表,遍历guess来统计一下不同位置数字相同的答案即可.代码C++class Solution {public: string getHint(string secret, string guess) {

2021-11-08 11:11:30 5625 4

原创 leetcode每日一题-598:范围求和(二)

leetcode每日一题-598:范围求和(二)链接范围求和 II题目分析每次添加都是从(0,0)加到(a,b),(0,0)一定是统计次数最多的,所以我们找到所有的等于(0,0)的值即可,那么矩阵中的哪些值等于(0,0)中的值呢,我们这样来考虑,找到所有a中的最小值x,找到所有b中的最小值y,那么因为x,y分别是a,b的最小值,所以他们和(0,0)一样一直被+1,所以答案就显而易见了.代码C++class Solution {public: int maxCou

2021-11-07 20:17:27 1464 2

原创 leetcode每日一题-26:删除有序数组中的重复项

leetcode每日一题-26:删除有序数组中的重复项链接删除有序数组中的重复项题目分析这是实现一个简单的去重操作,需要掌握,首先我们从0开始,然后每次找到不重复的元素加入其中,因为数组是有序的,只需要从前往后遍历即可.代码C++class Solution {public: int removeDuplicates(vector<int>& nums) { // 数组去重后的存储位 int idx = 0;

2021-11-06 10:42:04 161

原创 leetcode每日一题-1218:最长定差子序列

leetcode每日一题-1218:最长定差子序列链接最长定差子序列题目分析简单的逻辑分析问题,因为是等差序列,所以只需要遍历数组,然后每次以当前位置为结尾的位置,然后再加上之前的所有值即可,同时动态维护最大值,就能得到答案.代码C++class Solution {public: int longestSubsequence(vector<int>& arr, int d) { int res = 0; //

2021-11-05 19:37:27 938 3

原创 leetcode每日一题-367:有效的完全平方数

leetcode每日一题-367:有效的完全平方数链接有效的完全平方数题目分析这个其实是很简单的浮点数二分问题,我们只需要用浮点数二分来求出sqrt(num)然后再进行判断即可代码C++class Solution {public: bool isPerfectSquare(int num) { double l = 0, r = num; while(fabs(r - l) > 1e-6) {

2021-11-04 18:07:39 936 3

原创 leetcode每日一题-9:回文数

leetcode每日一题-9:回文数链接回文数题目分析首先,复数一定不是回文数,因为负号找不到对应的字符,那么我们只用判断正数的情况即可,我们每次获取最后一位,然后给他放到高位上继续添加下一个数位,为了避免颠倒之后的数据爆int,我们可以使用longlong来存储颠倒后的数据.代码C++class Solution {public: bool isPalindrome(int x) { if(x < 0) return 0; l

2021-11-03 08:48:39 150

原创 leetcode-869:重排序得到2的幂

leetcode-869:重排序得到2的幂链接重新排序得到 2 的幂题目分析给定正整数,然后判断任何顺序是否存在一种排序,是2的幂.如果要是2的幂,首先需要存在有2的幂和N的数位相同,我们发现N的范围最多到10^9,那么我们就可以二分2的次幂,寻找一个最小的数位等于N的,然后判断能不能组合即可.代码C++class Solution {public: bool reorderedPowerOf2(int x) { // 转化成字符串,方便统计数位,

2021-11-02 17:52:59 210

原创 leetcode每日一题-575:分糖果

leetcode每日一题-575:分糖果链接分糖果题目分析我们先统统计所有糖果的种类,如果糖果的种类小于等于n/2,那么她就可以吃到所有种类的糖,如果糖的种类大于n/2,那么她就只能吃到n/2种类型的糖.代码C++class Solution {public: int distributeCandies(vector<int>& candyType) { int n = candyType.size(); uno

2021-11-02 16:05:26 192

原创 leetcode每日一题-27:移除元素

leetcode每日一题-27:移除元素链接移除元素题目分析运用双指针解决即可,开始时同时l和r指针均指向第一个元素,l指针表示遍历元素,r表示实际应该填写的位置,每次当遍历的l对应位置值不等于要删除的值的时候,就赋值到r位置,同时r++,遍历结束后,r的值就是答案.代码C++class Solution {public: int removeElement(vector<int>& nums, int val) { int l

2021-10-28 12:14:23 160

原创 leetcode每日一题-34:在排序数组中查找元素的第一个和最后一个位置

leetcode每日一题-34:在排序数组中查找元素的第一个和最后一个位置链接 在排序数组中查找元素的第一个和最后一个位置题目分析这个其实就是昨天题目的升级版本,掌握应用两种二分的模板即可,这两种模板可以应用在90%的整数二分问题当中代码c++class Solution {public: // 两个整数二分模板的应用 vector<int> searchRange(vector<int>& nums, int target

2021-10-27 11:17:45 173

原创 leetcode每日一题-35:搜索插入位置

leetcode每日一题-35:搜索插入位置链接题目分析简单的二分查找,查询到结果后,判断对应位置的值即可,然后>=返回检索位置,反之,返回l+1代码class Solution {public: int searchInsert(vector<int>& nums, int target) { int l = 0, r = nums.size() - 1; while(l < r) {

2021-10-26 19:39:20 163

王道-操作系统-第二章.pdf

王道操作系统第二章笔记

2022-01-09

空空如也

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

TA关注的人

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