自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 日常leetcode代码思路总结(持续更新)

leetcode题目思想总结

2024-02-22 23:02:03 1119

原创 JZ43 整数中1出现的次数(从1到n整数中1出现的次数)

输入一个整数 n ,求 1~n 这 n 个整数的十进制表示中 1 出现的次数例如, 1~13 中包含 1 的数字有 1 、 10 、 11 、 12 、 13 因此共出现 6 次注意:11 这种情况算两次

2022-08-13 13:39:05 112 1

原创 JZ39 数组中出现次数超过一半的数字

例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。数据范围:n \le 50000n≤50000,数组中元素的值 0 \le val \le 100000≤val≤10000。给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。...

2022-08-13 00:15:33 61

原创 JZ20 表示数值的字符串

str 仅含英文字母(大写和小写),数字(0-9),加号 ‘+’ ,减号 ‘-’ ,空格 ’ ’ 或者点 ‘.’。例如,字符串[“+100”,“5e2”,“-123”,“3.1416”,“-1E-16”]都表示数值。但是[“12e”,“1a3.14”,“1.2.3”,“±5”,“12e+4.3”]都不是数值。3.(可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个整数(可正可负)2.(可选)一个符号字符(‘+’ 或 ‘-’)2.(可选)一个符号字符(‘+’ 或 ‘-’)输入:“123.45e+6”...

2022-08-07 22:44:33 78

原创 JZ51 数组中的逆序对

在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。

2022-07-30 10:55:01 61

原创 JZ19 正则表达式匹配

说明因为这里c为0个,a被重复一次,*表示零个或多个a。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab。2.pattern只包含从a-z的小写字母以及字符.和。”表示可匹配零个或多个(‘*’)任意字符(‘.’)a"匹配,但是与"aa.a"和"ab*a"均不匹配。可以出现任意次的a,所以可以出现1次a,能匹配上。1.模式中的字符’.‘表示任意一个字符。输入“aaab”,“a。输入“aaa”,"a。输入“aad”,“c。...

2022-07-24 21:51:55 126

原创 JZ44 数字序列中某一位的数字

数字以0123456789101112131415…的格式作为一个字符序列,在这个序列中第2位(从下标0开始计算)是2,第10位是1,第13位是1,以此类题,请你输出第n位对应的数字。数据范围0\len\le10^9\0≤n≤10。

2022-07-24 09:29:47 155

原创 JZ38 字符串的排列

例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。输入一个长度为n字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。

2022-07-23 22:22:15 216

原创 JZ11 旋转数组的最小数字

有一个长度为n的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。

2022-07-23 11:19:31 52

原创 JZ53 数字在升序数组中出现的次数

数据范围0\len\le1000,0\lek\le1000≤n≤1000,0≤k≤100,数组中每个元素的值满足0\leval\le1000≤val≤100。给定一个长度为n的非降序数组和一个非负数整数k,要求统计k在数组中出现的次数。要求空间复杂度O(1)O(1),时间复杂度O(logn)O(logn)...

2022-07-21 23:48:39 71

原创 JZ68 二叉搜索树的最近公共祖先

1.对于该题的最近的公共祖先定义对于有根树T的两个节点p、q,最近公共祖先LCA(T,p,q)表示一个节点x,满足x是p和q的祖先且x的深度尽可能大。2.二叉搜索树是若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值。3.所有节点的值都是唯一的。...

2022-07-17 21:09:30 39

原创 JZ8 二叉树的下一个结点

给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针。

2022-07-10 11:26:07 63

原创 JZ26 树的子结构

输入两棵二叉树A,B,判断B是不是A的子结构。(我们约定空树不是任意一个树的子结构)

2022-06-25 16:37:48 43

原创 JZ54 二叉搜索树的第k个节点

给定一棵结点数为n 二叉搜索树,请找出其中的第 k 小的TreeNode结点值。1.返回第k小的节点值即可2.不能查找的情况,如二叉树为空,则返回-1,或者k大于n等等,也返回-13.保证n个节点的值不一样数据范围: 0 \le n \le10000≤n≤1000......

2022-06-09 00:10:19 53

原创 JZ77 按之字形顺序打印二叉树

给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)

2022-06-07 00:03:07 82

原创 JZ76 删除链表中重复的结点

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表 1->2->3->3->4->4->5 处理后为 1->2->5

2022-06-06 01:39:40 47

原创 JZ35 复杂链表的复制

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)。 下图是一个含有5个结点的复杂链表。图中实线箭头表示next指针,虚线箭头表示random指针。为简单起见,指向null的指针没有画出。...

2022-06-06 01:05:32 56

原创 JZ6从尾到头打印链表

输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。如输入{1,2,3}的链表如下图:返回一个数组为[3,2,1]0

2022-06-05 19:53:49 85

原创 (二)代码好坏判定

好坏只是笼统的判定。好代码:易扩展易读简单易维护判断代码的角度:灵活性(flexibility)、可扩展性(extensibility)、可维护性(maintainability)、可读性(readability)、可理解性(understandability)、易修改性(changeability)、可复用(reusability)、可测试性(testability)、模块化(security)、高内聚低耦合(high cohesion loose coupling)、高效(high ef

2021-11-17 23:56:52 89

原创 (一)浅谈设计模式

概述本系列主要用于对设计模式之美的学习与总结,设计模式之美是由谷歌工程是王争开的课程系列。设计模式和操作系统、组成原理、编译原理基础学科不一样,它和数据结构、算法更像是一类,相比于基础学科,设计模式能更直接提高你的开发能力。数据结构和算法是教你如何写出高效的代码,设计模式讲的是如何写出可扩展、可读、可维护的高质量代码。这也就是为什么要学习设计模式。通过王争的专栏讲解,结合相关实例,让飘在云上的知识点能够落地,并且在日常开发中潜移默化的影响自己,提高代码能力。提高复杂代码的设计和开发能力日常工作中,

2021-11-17 23:54:58 82

原创 (二)代码好坏判定

概要本系列主要用于对设计模式之美的学习与总结,设计模式之美是由谷歌工程是王争开的课程系列。设计模式和操作系统、组成原理、编译原理基础学科不一样,它和数据结构、算法更像是一类,相比于基础学科,设计模式能更直接提高你的开发能力。数据结构和算法是教你如何写出高效的代码,设计模式讲的是如何写出可扩展、可读、可维护的高质量代码。这也就是为什么要学习设计模式。通过王争的专栏讲解,结合相关实例,让飘在云上的知识点能够落地,并且在日常开发中潜移默化的影响自己,提高代码能力。提高复杂代码的设计和开发能力日常工作中,

2021-11-17 23:39:16 117

原创 计算机网络五层协议

TCP/IP协议分层各层对应的协议:各层作用:第五层——应用层(application layer)应用层(application layer):是体系结构中的最高。直接为用户的应用进程(例如电子邮件、文件传输和终端仿真)提供服务。在因特网中的应用层协议很多,如支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,支持文件传送的FTP协议,DNS,POP3,SNMP,Telnet等等。第四层——传输层(transport layer)运输层(transport layer):负责向

2021-05-29 09:41:02 2388

原创 Mysql底层原理

mysql底层原理InnoDB与MyISAM区别InnoDB支持事务,主键,外键,全文索引,行数计算需扫瞄全表。MyISAM支持直接取行数B+树B树B+树非叶子结点存储数据(数据库中页的大小是固定的),减少磁盘的I/O数据是按顺序排列,范围查找、排序查找、分组查找、去重查找叶子节点:双向链表聚集索引与非聚集索引聚集索引:以主键作为B+树的索引键而构成的B+树索引非聚集索引:以非主键外的列构成B+树的索引键,叶子节点存储该列对应的主键。...

2021-05-29 09:29:20 48

原创 最长不含重复字符的子串

最长不含重复字符的子串请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"

2021-05-25 23:28:59 217

转载 redis持久化

Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”)。由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的

2021-05-23 01:01:52 55

原创 socket

Unix/Linux基本哲学是“一切皆文件”,都可以用“打开open->读写write/read->关闭close”模式来操作。从图中可以看出,当客户端调用connect时,触发了连接请求,向服务器发送了SYN J包,这时connect进入阻塞状态;服务器监听到连接请求,即收到SYN J包,调用accept函数接收请求向客户端发送SYN K ,ACK J+1,这时accept进入阻塞状态;客户端收到服务器的SYN K ,ACK J+1之后,这时connect返回,并对SYN K进行确认;服务

2021-05-22 23:54:52 42

原创 进程、线程、协程

进程和线程区别?线程线程是操作系统进行运算调度的最小单位,被包含在进程中,是进程中实际运作的单位。进程进程是一个“执行中的程序”,程序是指令及其组织形式的描述,是一个没有生命的实体,只有处理器赋予程序生命时,他才能成为一个活动的实体。协程我们知道操作系统在线程等待IO的时候,会阻塞当前线程,切换到其它线程,这样在当前线程等待IO的过程中,其它线程可以继续执行。当系统线程较少的时候没有什么问题,但是当线程数量非常多的时候,却产生了问题。一是系统线程会占用非常多的内存空间,二是过多的线程切换会占用大

2021-05-22 19:27:54 57

原创 死锁

死锁定义多个进程在运行过程中因争夺资源而造成的一种僵局。当进程处于这种僵局状态,若无外力作用,他们将无法再向前推进。例子:进程A先锁a在获得锁b的顺序获得锁,进程B先锁b在获得锁a的顺序获得锁,当进程A和进程B同时推进时就造成了死锁。死锁4个必要条件互斥:进程对所分配的资源具有排他性控制,即在一段时间内某资源仅为一进程所占有。请求保持:当进程因请求资源而阻塞时,对已获得的资源保持不放。不可剥夺:进程已获得的资源在未使用完之前,不能被剥夺,只能使用完由自己释放。环路等待:在发生死锁时,必然

2021-05-22 15:42:19 55

原创 动态规划(三)最长公共子序列(LCS)

最长公共子序列#include <iostream>#include "string"#include<vector>using namespace std;// 状态:dp[i][j] 表示s1中第i个字符和s2中第j个字符表示的最长公共子序列// 状态转移:dp[i][j] = max(dp[i-1][j], dp[i][j-1])int lcs(const string &s1, const string &s2) { if (s1.len

2021-05-21 23:42:08 61

原创 动态规划(二)0-1背包问题

0-1背包问题递归+记忆中间结果#include <iostream>#include "string"#include<vector>using namespace std;int backage01(vector<int> w, vector<int> v, int contains, int index);vector<vector<int>> memory;int backage01(vector<int&

2021-05-21 01:01:19 72

原创 动态规划(一)正整数拆解问题

问题描述动态规划问题总结问题leetcode 343. Integer BreakGiven an integer n, break it into the sum of k positive integers, where k >= 2, and maximize the product of those integers.Return the maximum product you can get.Example 1:Input: n = 2Output: 1Explanatio

2021-05-18 23:43:13 154

原创 mysql事务隔离级别

事务的安全保障ACID原子性(atomicity)、持久性(consistency)、隔离性(isolation)、一致性(durability)。原子性当一个事务在执行途中发生错误,我们很难知道哪些更改已经生效,哪些更改没有生效,而如果重试可能会导致数据重复或者数据错误。为了简化这个问题,数据库丢弃或者撤销该事务中迄今为止任何写入,这样做就可以保证没有任何东西在这个过程中被改变,所以可以安全的重试。中止出错的事务,并撤销该事务进行的所有变更。一致性一致性是应用程序的属性,应用程序可以用原子性

2021-05-17 23:50:28 75

原创 图搜索问题(二)N皇后(leetcode 51)&数独(leetcode 37)

N皇后leetcode 51The n-queens puzzle is the problem of placing n queens on an n x n chessboard such that no two queens attack each other.Given an integer n, return all distinct solutions to the n-queens puzzle.Each solution contains a distinct board confi

2021-05-15 11:21:34 49

原创 图搜索问题(一)字符串匹配(leetcode 79)&连接图判断(leetcode 200)

图的深度遍历leetcode 79. Word SearchGiven an m x n grid of characters board and a string word, return true if word exists in the grid.The word can be constructed from letters of sequentially adjacent cells, where adjacent cells are horizontally or vertically

2021-05-11 08:43:35 158

原创 排列组合问题

排列问题:leetcode 46. Permutations.Given an array nums of distinct integers, return all the possible permutations. You can return the answer in any order.Example 1:Input: nums = [1,2,3]Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]代码实现class

2021-05-09 23:37:14 74

原创 三次握手四次挥手

TCP可靠连接,网络连接和断开过程中三次握手、四次挥手。TCP报文报文为20字节固定长度+4字节*15 - 20 = 40字节,最大头部长度是60字节。数据偏移单位是4字节。建立连接–三次握手问题1: 为什么需要三次连接,两次不可以吗?为了防止已经失效的连接请求报文发送给服务端,从而产生错误。假设客户端发送连接请求,由于网络中不稳定情况滞留很久,这是客户端重新发送请求连接报文,客户端现接受了客户端第二次请求的报文建立连接后,又收到第一次客户端发送的连接请求报文,三次连接时,如果服务端重新接

2021-04-27 00:37:58 173

原创 二叉树前序\中序\后序\层次遍历

节点信息struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode() : val(0), left(nullptr), right(nullptr) {} TreeNode(int x) :val(0), left(nullptr), right(nullptr) {} TreeNode(int x, TreeNode *left, TreeNode *right) : val(

2021-04-18 13:34:15 57

原创 redis底层数据结构实现

redis的底层数据结构实现redis底层数据结构实现字典跳跃表参考资料:redis底层数据结构实现本文章主要整理redis的五种数据类型(string、list、hash、set、zset)的底层数据结构实现。字典dictht是一个散列表结构,使用拉链法解决哈希冲突。This is our hash table structure. Every dictionary has two o...

2019-07-23 11:14:02 453

原创 红黑树,算法导论

RB Tree本文将理解红黑树的性质,红黑树的插入、删除操作的源码及时间复杂度分析。性质所有结点只有红、黑两色根结点是黑色任意节点到叶子结点的所有路径中还有的黑色结点的个数(黑高(hb(x))相同叶子结点(nil)都为黑色红色结点的孩子结点一定是黑色左旋左右旋转结点是红黑树的插入和删除的基础操作。下面将给出左旋操作,右旋操作类似。LEFT-ROTATE(T, x) y...

2019-07-15 12:00:05 148

原创 十大排序算法(C++版)

排序算法冒泡排序#include <bits/stdc++.h>using namespace std;//时间复杂度 最好的:O(n^2), 最坏:O(n^2),平均:O(n^2),空间复杂度:O(1),稳定//改善的冒泡排序 最好:O(n) 最好 O(n^2) 平均 O(n^2)void bubble(int a[],int length){ for(int...

2019-07-04 12:12:35 125

空空如也

空空如也

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

TA关注的人

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