自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一只老风铃

我要去吃饭了

  • 博客(11)
  • 资源 (2)
  • 收藏
  • 关注

原创 删除多余字符得到字典序最小序列

问题描述题目描述给一个全是小写字母的字符串str,删除多余字符,使得每种字符只保留一个,并且让最终结果字符串字典序最小。输入dbcacbca输出dabc思路首先统计各个字符出现的数目 int count[26]标记数组表明结果中是否包含当前字符 bool visit[26]对于新来的一个字符,如果已经在结果中那么跳过如果不在结果中,那么需要判断结果末尾的元素是否需要弹出,条件为:①末尾元素之后还存在剩余②末尾元素的字典序比当前字符字典序大待弹出一定的末尾元素后(或者不

2020-12-30 13:18:30 46

原创 Leetcode:单调栈_可见山峰问题

题目描述一个不含有负数的数组可以代表一圈环形山,每个位置的值代表山的高度。比如,{3,1,2,4,5},{4,5,3,1,2}或{1,2,4,5,3}都代表同样结构的环形山。3->1->2->4->5->3 方向叫作 next 方向(逆时针),3->5->4->2->1->3 方向叫作 last 方向(顺时针)。山峰 A 和 山峰 B 能够相互看见的条件为:如果 A 和 B 是同一座山,认为不能相互看见。如果 A 和 B 是不同的山,并且

2020-12-12 04:25:25 80

原创 单调栈结构

问题引出单调栈是这样一类结构,栈中的元素有序,例如一个单调递增栈,如果新来的元素比栈顶更大,那么入栈;如果新来的元素比栈顶更小,那么弹出若干栈顶元素,直到新来的元素能够入栈单调栈经典问题:条形图的最大矩形面积该问题,维护一个单调递增栈,如果新来的元素比栈顶小,那么开始一个count计数弹出。不断计算矩形面积:count*stack.top() 即使每次的矩形是top高度×当前矩形的长(count计数)。同时弹出count个元素,重新压入count+1个新元素(新元素使得前面部分减少:短板效

2020-12-10 17:33:32 53

原创 Leetcode 纸牌博弈:区间递增动态规划

题目描述给定一个整型数组arr,代表数值不同的纸牌排成一条线,玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿,但是每个玩家每次只能拿走最左和最右的纸牌,玩家A和玩家B绝顶聪明。请返回最后的获胜者的分数。输入41 2 100 4输出101基本思路容易知道,当只有一张牌时,先拿的那个人获得这张牌的分数,后拿的人获得0分。进一步,若有arr[n]张牌,那么先拿的人可能有两种选择。拿第一张牌+剩下的牌中其为后拿牌的人拿最后一张牌+剩下的牌中其为后拿的人因此问题的动态规划方程为

2020-12-08 21:48:38 42

原创 InnoDB索引①:B+树索引

InnoDB索引索引是数据库应用设计和开发中的重要技术手段,其通过选取记录的一列或者多列,在此基础上建立相应的数据结构,从而达到快速查询的目的。InnoDB存储引擎主要支持的索引类型包括:B+树索引、自适应Hash索引、全文索引。B+树索引是传统意义上的索引的实现方式,也是关系数据库中目前使用最多的索引方式。B+树本质为多路查找树,其根据key定位相应的叶子节点,从而快速的查询相应的数据。通过B+树索引可以定位到目标数据所在的页,将相应的页从磁盘加载进内存,从而寻找到其中数据。B+树数据结构B

2020-12-06 13:31:02 57

原创 数组划分k份:二分法

题目描述给定一个整型数组arr, 数组中的每个值都为正数,表示完成一个工作需要的时间,再给定一个整数num,表示工人的数量,每个工人只能完成连在一起的工作。所有工人并行工作,请返回完成所有的工作的最少时间。本题的问题可以理解为给定一个数组arr[] 将其尽可能的等分为k份,其中每一份中的最大值的最小值是多少?测试用例输入3 23 1 4输出4说明: 划分为[3 1]、[4]输入5 31 1 1 4 3输出4说明:划分为[1 1 1]、[4]、[3]本题思路最终

2020-12-05 12:14:27 74

原创 信号与不可重入

信号信号是软件中断。提供了一种处理异步事件的方法。例如当用户在终端输入中断键(ctrl+c),会向前台进程发送一个中止信号SIGINT,以此来中止一个进程。信号通常以SIG3个字符开头作为命名,例如SIGABRT是夭折信号;当进程调用abort函数时发出这种信号。SIGALARM是闹钟信号,由alarm函数设定的定时器超时后将产生这种信号。几种常见的信号类型:①当用户在终端输入某些键时,引起终端产生相应的信号。例如按下DELETE键或者Ctrl+C键将产生中断信号SIGINT。该信号用于停止一个

2020-12-05 00:37:17 80

原创 Manacher算法:避免从1开始

问题引出给定一个字符串str, 返回str中最长回文子串的长度str=“123”。其中的最长回文子串“1”或者“2”或者“3”,所以返回1。str=“abc1234321ab”。其中的最长回文子串“1234321”,所以返回7。如果str的长度为N,解决原问题的时间复杂度都达到O(N).输入描述:输入为一个字符串str输出描述:输出一个整数表示最长回文子串的长度此类问题与KMP算法类似,都是字符串匹配算法,KMP算法利用模式串的next数组,避免重复计算,其核心思想是:当匹配失

2020-12-04 02:16:10 45

原创 Leetcode 两个有序数组间相加的TopK

题目描述给定两个有序数组arr1和arr2,再给定一个整数k,返回来自arr1和arr2的两个数相加和最大的前k个,两个数必须分别来自两个数组按照降序输出输入描述:第一行三个整数N, K分别表示数组arr1, arr2的大小,以及需要询问的数接下来一行N个整数,表示arr1内的元素再接下来一行N个整数,表示arr2内的元素输出描述:输出K个整数表示答案输入5 41 2 3 4 53 5 7 9 11输出16 15 14 14对于TopK问题,例如经典的海量数组中

2020-12-04 00:16:09 120

原创 解决海量数据问题:分区表

分区表分区指的是将一个表或者索引分解为多个更小、更加容易管理的部分。从访问数据库的应用角度上看,它们只有一个逻辑表示,但在物理上表的记录可能划分为多个模块,也就是所谓的分区。Mysql支持水平分区,即将同一个表的不同行的记录划分到不同的物理文件中,暂时不支持垂直分区(将同一张表的记录按照列划分到不同的物理文件中)。而每一个分区中既存放着索引也存放着数据。Mysql支持的分区类型:Range分区:行数据基于一个给定连续区间的列的值,划分到不同分区。List分区:List分区与Range的

2020-12-02 00:37:58 54

原创 Leetcode 1到n中x的个数

题目描述给定一个整数n,返回从1到n的数字中1出现的个数。例如:n=5, 1∼n为1, 2, 3, 4, 5。那么1出现了1次,所以返回1。n=11, 1∼n为1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11。那么1出现的次数为1(出现1次),10(出现1次),11(有两个1,所以出现了2次),所以返回4。思路*分别研究不同位上的1出现的个数,其规律如下:以1023为例子:对于个位数上为1的情况,可以将1=>1023划分为102个大小为10的区间,以及1021=

2020-12-01 01:22:58 105

正则式到最小化DFA

实现了从正则式子到NFA,NFA到DFA,并最小化DFA的过程,

2018-01-05

计算机图形学-Bezier与Bspline曲线,曲面

MIT计算机图形学作业 C++实现,Bezier曲线,Bspline曲线

2018-01-05

空空如也

空空如也

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

TA关注的人 TA的粉丝

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