自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 问答 (2)
  • 收藏
  • 关注

原创 Leetcode 410. Split Array Largest Sum

dp[i][j] 表示将数组中前j个数字分成i组所能得到的最小的各个子数组中最大值i的范围是[1, j]计算dp[i][j]时,对于所有1<=k<=j-1:最后一个分组为nums[k+1]…nums[j]时,此时各个子数组中最大值为max(sum(nums[k+1:j+1]), dp[i-1][k])遍历k得到最小的dp[i][j]最终返回 dp[m][n] 即可class Solution {public: int spli...

2020-05-28 18:26:15 197

原创 Leetcode 407. Trapping Rain Water Ⅱ

首先,将四条边上的点加入PQ中,且标记为visitedRepeat until PQ is empty: pop PQ中的最小值min,遍历它的四个邻居neighbor: 如果neighbor没有被visited: result += max(0, min - neighbor) 设置neighbor = max(neighbor, min),并加入PQ中,且标记为visitedclass ...

2020-05-27 12:09:43 146

原创 AddressSanitizer+cmake在Linux平台下的使用

编译指令:CXXFLAGS通常需要加上-fsanitize=address-fno-omit-frame-pointer #打印函数调用路径-fsanitize-recover=address #AddressSanitizer遇到错误时能够继续-fsanitize=address-fno-omit-frame-pointer-fsanitize-recover=address运行时动态链接设置环境变量,如设置AddressSanitizer遇到错误时继续运行

2020-05-26 10:06:01 5850

原创 Leetcode 406. Queue Reconstruction by Height

将输入按照h降序,k升序进行排序。定义新的队列为空。然后按序遍历输入,将每个人按照idx = k插入到新的队列中,能够保证后插入的人一定不会影响到之前插入的人。class Solution {public: vector<vector<int>> reconstructQueue(vector<vector<int>>& people) { vector<vector<int>> re..

2020-05-26 09:56:25 109

原创 Leetcode 403. Frog Jump

dp[i] = […]表示在第i块stone上允许跳出的步伐大小dp[i]计算:遍历stone[1]…stone[i-1]如果能从stone[k]跳到stone[i],则向dp[i]加入新的gap-1,gap,gap+1,注意<=0的数不添加。最后检查dp[-1]的长度是否不为0class Solution {public: bool canCross(vector<int>& stones) { if (stones...

2020-05-25 10:58:26 154

原创 Leetcode 391. Perfect Rectangle

正确的答案应当满足:1.最大的长方形面积等于所有长方形的面积之和2.除了四个顶点出现的次数为1,其他点出现次数必须为2/4次class Solution {public: bool isRectangleCover(vector<vector<int>>& rectangles) { //记录四边形顶点出现次数 unordered_map<string, int> vertex_count; //记录总面积 int ...

2020-05-24 14:31:13 187

原创 Leetcode 390. Elimination Game

第一次删除时,所有数字都是偶数,除以2之后,得到了1~n/2的连续数组。对于1~n/2的序列,从右向左删除,原来的结果为该lastRemaining(n/2)镜像结果的两倍。class Solution {public: int lastRemaining(int n) { if (n == 1) return 1; // 1 2 3 4 5 ... n // TO // 2*1 2*2 ...

2020-05-21 16:40:12 259

原创 C++ Primer 笔记19. 特殊工具与技术

控制内存分配new步骤:1.调用operator new分配内存2.调用构造函数,并传入初始值3.返回指向对象的指针delete步骤:1.对指向的对象执行对应的析构函数2.调用operator delete释放内存空间使用全局作用域的new和delete:标准库版本:继承C语言中的malloc与free:内存分配与初始化分离1.使用allocator类2.使用operator new和operator delete分配和释放空间;定位new构造对...

2020-05-20 12:45:11 200

原创 Leetcode 377. Combination Sum Ⅳ

dp[i]表示target为i时的组合数。对于每一个数i,遍历 nums 数组,dp[i] += dp[i-nums[j]] + nums[j] (满足nums[j] <= i)。class Solution(object): def combinationSum4(self, nums, target): """ :type nums: List[int] :type target: int :rtype: ...

2020-05-20 12:00:42 172

原创 C++ Primer 笔记18. 用于大型程序的工具

异常处理栈展开:当抛出异常,程序寻找对应catch子句如果没有找到,且该try嵌套在其他try中,则检查外层try匹配的catch子句如果找不到,则退出当前函数,在调用当前函数的外层函数中继续寻找否则程序将退出捕获异常:noexcept:当noexcept函数抛出异常,程序会调用terminate如果基类虚函数承诺不会抛出异常,派生虚函数必须作出同样的承诺;反之不是异常类层次:使用自己定义的异常类命名空间全局命名空间:...

2020-05-19 19:00:22 169

原创 C++ Primer 笔记17. 标准库特殊设施

tuple类型bitset类型正则表达式随机数随机数引擎:引擎种类I/O库bool:默认打印0/1打印值为true或者false:整型:控制精度:指定浮点数计数法:打印小数点:输出补白:控制输入格式:未格式化的输入输出:流随机访问:...

2020-05-18 14:43:51 136

原创 Leetcode 375. Guess Number Higher or Lower Ⅱ

dp[i][j]表示从i~j中选择一个数字,至少需要多少钱才能猜出这个数字。首先,如果只有1个数字,dp[i][i]=0 如果有两个数字,则猜第1个数字,dp[i][i+1] = i 如果有3个数字,则猜中间的数字,dp[i][i+2] = i+1对于dp[i][j]而言,可以先猜k(i<=k<=j),然后根据大小情况猜dp[i][k-1]或者dp[k+1][j]则dp[i][j] = min( k + max(dp[i][k-1],...

2020-05-18 14:26:50 125

原创 Leetcode 373. Find K Pairs with Smallest Sums

将nums1与nums2组成的所有组合用矩阵M的形式表示,M[i][j]表示nums[i]+nums[j]用priority queue数据结构进行维护,首先将nums[0] + nums[1]加入pq中,每次pop出一个元素时,将该元素右边和下边未访问过的元素加入pq中。from Queue import PriorityQueue as PQclass Solution(object): def kSmallestPairs(self, nums1, nums2, k): ..

2020-05-17 21:38:24 200

原创 C++ Primer 笔记16. 模板与泛型编程

定义模板函数模板:编译器根据实参类型实例化特定版本的函数模板参数列表:非类型模板参数:表示一个值类模板:代替用户需要提供的类型或值友元与类模板:别名:static函数:每个实例都有自己的static成员实例必须通过引用特定的实例来访问static成员当名字表示类型时,必须用关键字typename显示标注本身是模板的成员函数不能是虚函数默认模板实参:控制实例化:避免多个文件中实例化相同...

2020-05-15 16:59:06 150

原创 Leetcode 372. Super Pow

两个先验知识:1. ab%k = (a%k)(b%k)%k2. a^(mn)%k = (a^m%k)^n%k令f(a, b)=a^b % k,则 f(a,1234567) = f(a, 1234560) * f(a, 7) % k = f(f(a, 123456),10) * f(a,7)%k;class Solution(object): def subPow(self, a, b): #0<= b <= 10 if b == 0: ..

2020-05-14 17:22:29 147

原创 Leetcode 368. Largest Divisible Subset

先对数组进行排序,用动态规划的思想,dp[i]表示以nums[i]结尾的最长的divisible subset。首先dp[0] = [nums[0]]更新dp[i]时,如果num[i]为之前某个数num[j](j<i)的倍数,则存在以nums[i]结尾,长度为dp[j] + 1的divisible subset。遍历nums[0]...nums[i-1],找出以nums[i]结尾的最长divisible subset。class Solution(object): def l..

2020-05-13 12:59:54 171

原创 C++ Primer 笔记15.面向对象程序设计

概述动态绑定:定义基类和派生类派生类对象概念模型:允许将基类指针或引用绑定到派生类对象的基类部分上派生类的构造函数:将某个类用作基类,则该类必须已经定义final关键字阻止继承:静态类型:编译时已知的类型动态类型:表示内存中的对象类型,运行时才知道类型不存在类型转换:当基类的构造函数传递一个派生类对象时,构造函数只处理基类自己的成员虚函数当使用指针或引用调用虚函数时执行动态绑定(运行时解析),否则都在编译时进行解...

2020-05-11 16:46:24 144

原创 Leetcode 365. Water and Jug Problem

当z为GCD(x,y)的倍数时,返回True裴蜀定理:如果d为a,b的最大公约数,则存在整数x,y使得:ax+by=d且d为最小的可以被写成ax+by的正数其他可以被写成ax+by的整数都是d的倍数当a或b为负数时,说明正在从一个杯子中倒出x杯子或y杯子的水同理,如果a或b为正数时,说明正在向杯子中导入x杯子或y杯子的水。例如:x=5, y=6, z=3其中,z = 3GCD(x,y),因此可以成功z = 3 * y - 3 * x说明需要倒入3次6容量的杯子,倒..

2020-05-11 15:42:50 169

原创 Leetcode 363. Max Sum of Rectangle No Larger Than K

对于一维数组,求每个数从数组第一个元素开始的累计和sum[i],对于每一个数num[i]而言,要找到sum[i] - sum[j]<=k,且sum[j]最小的数,用java Treemap进行二分查找即可。而二维数组,可以进行遍历,将相同列的数累加,转换成一维数组的形式。解决row>column的方式:按照列的方式进行累加和的计算以及二分查找。class Solution { public int maxSumSubmatrix(int[][] matrix, i...

2020-05-09 13:44:32 160

原创 C++ Primer 笔记14. 重载运算与类型转换

输入输出重载必须是非成员函数算术和关系运算符+,-,*,/=,!=,>,>=,<,<=赋值运算符赋值:复合赋值:下标运算符必须是成员函数两个版本:1.作用于常量对象,返回常量2.作用域非常量对象递增递减运算符前置递增、递减:...

2020-05-08 15:51:01 139

原创 Leetcode 354. Russian Doll Envelopes

首先对envelopes数组按照h升序,w降序进行排序,然后直接对w数组求解longest increasing subsequence即可。longest increasing subsequence问题:假设dp[i]表示长度为i的increasing subsequence结尾元素最小值,显然dp[i] >= dp[i-1]遍历数组nums[i]时: 如果num...

2020-05-07 12:15:56 188

原创 数据库——分布式数据库

提交协议2-Phase commit:A 发送 prepare 给所有站点站点发送abort/ready给A当所有站点都发送ready时,A向所有站点发送commit;否则发送abort3-Phase commit:当超过k个站点发生故障时,才阻塞CAP定理任何分布式数据库最多具有以下性质中的两个:一致性可用性划分容忍性...

2020-05-06 17:20:15 181

原创 数据库——性能调优

选择合适的CPU数据库应用分类:OLTP(在线事务处理): 数据库容量较小 用户操作并发量大 事务处理时间短,一般使用索引IO密集型 OLAP(在线分析处理): 数据仓库或数据集市 执行复杂的SQL语句进行查询 CPU密集型内存A:缓冲池大小=数据文件本身大小,所有操...

2020-05-06 17:17:52 171

原创 数据库——备份与恢复

概述备份方法:热备:在数据库运行中直接备份,对正在运行的数据库没有影响冷备:数据库停止情况下备份,拷贝相关物理文件温备:在数据库运行中直接备份,会对当前数据库操作有影响备份文件:逻辑备份:可读文本文件裸文件备份:拷贝数据库的物理文件,恢复时间更短备份内容:完全备份增量备份:在上次完全备份的基础上,对更新的数据进行备份 记...

2020-05-06 17:17:03 487

原创 数据库——并发控制

两阶段封锁协议保证可串行性的协议:增长阶段:只能获得锁缩减阶段:只能释放锁基于时间戳的协议每个事务T都有一个时间戳(事务开始时间),记作TS(Ti)记W-timestamp(Q)为成功执行write(Q)的所有事务的最大时间戳记R-timestamp(Q)为成功执行read(Q)的所有事务的最大时间戳假设Ti发出read(Q):若TS(Ti)<W-...

2020-05-06 17:14:59 252

原创 C++ primer 笔记13. 拷贝控制

拷贝、赋值与销毁拷贝构造函数:第一个参数是自身类类型引用,且任何额外参数都有默认值等价的合成拷贝赋值运算符:拷贝初始化:其他情况:非引用的函数对象参数传递非引用的函数返回对象使用容器调用insert或push操作要求编译器生成合成版本:阻止拷贝和赋值1.定义删除的函数2.声明为private,且不定义交换操作swa...

2020-05-06 13:41:28 167

原创 Leetcode 352. Data Stream as Disjoint Intervals

显然,Disjoint Intervals需要通过二分搜索的方式进行维护。插入一个数n时,假设k1([k1,v1]为<=n的最大的作为intervals开始的数,k2([k2,v2])为>=n的最小的作为intervals开始的数,可能会发生四种情况:1. v1 + 1 == n == k2 - 1,此时,需要将[k1,v1], [k2, v2]区间merge为[k1, v...

2020-05-06 12:08:50 182

原创 Leetcode 338. Counting Bits

递归方法:f[n] = f[n/2] + f[n%2]class Solution(object): def countBits(self, num): """ :type num: int :rtype: List[int] """ dp = [0,1,1] if num <=...

2020-05-05 11:32:37 114

原创 Leetcode 336. Palindrome Pairs

有4种情况能够组成回文对:Case1:如果s1为空字符串,且s2为回文字符串,则s1+s2, s2+s1均为回文Case2:如果s1为s2的逆字符串,则s1+s2, s2+s1均为回文Case3:如果s1[0:cut]为回文,且存在s2为s1[cut+1:]的逆字符串,则s2+s1为回文Case4:同理,如果s1[cut+1:]为回文,且存在s2为s1[0:cut]的逆字符串,...

2020-05-04 12:58:50 137

原创 Leetcode 330. Patching Array

假设current为[0,n]中最小的不能组成的数,[0,current)能够组成,如果存在num <= current,则可以将num加入到[0,current)中组成[0, current + num),否则,必须加入current这个数到数组中,此时能够组成的数变为[0,current + current)。class Solution(object): ...

2020-05-03 12:28:51 164

原创 数据库——锁

什么是锁MyISAM中使用表锁InnoDB使用行锁InnoDB存储引擎中的锁两种标准的行级锁:共享锁(S),允许事务读数据排他锁(X),允许事务删除/更新数据意向锁:下一行将被请求的锁的类型意向共享锁;意向排他锁意向锁只会阻塞全表扫的请求通过INFORMATION_SCHEMA架构下的INNODB_TRX, INNODB_LOCKS, INNOD...

2020-05-02 15:48:45 201

原创 数据库——事务

事务的四大特征(ACID)原子性一致性:事务前后,数据库的完整性约束没有被破坏隔离性:一个事务的影响在提交前对其他事务不可见持久性:事务一旦提交,结果是永久性的;即使发生故障,也能够恢复事务隔离性和原子性事务隔离级别:1.可串行化2.可重复读:只允许读取已提交数据,而且一个事务两次读取一个数据项期间,其他事务不得更新该数据3.已提交读:只允许读取已提交...

2020-05-02 15:46:47 225

原创 数据库——索引

索引数据结构B+树哈希索引常见索引聚集索引(主索引):按照每张表的主键构造B+树叶节点为数据页每个数据页通过双向链表进行链接对于主键的排序查找和范围查找速度很快非聚集索引(辅助索引):叶节点只能获得主键索引的主键,通过主键的聚集索引再获得行记录稠密索引:每个搜索码值都有一个索引项稀疏索引:通常只为一个块中第一个记录建立索引多级索引...

2020-05-02 15:42:26 211

原创 C++ primer 笔记12. 动态内存

动态内存与智能指针头文件 <memory>直接管理内存new, delete如果内存耗尽,new会抛出bad_alloc异常阻止new抛出异常:delete之后,指针变成空悬指针,指向现在已经无效的内存,将nullptr赋予指针,指明其不指向任何对象shared_ptr和unique_ptr都支持的操作:shared_...

2020-05-02 15:32:25 124

原创 Leetcode 329. Longest Increasing Path in a Matrix

维护dp数组,dp[i][j]表示以(i,j)为起点的最长递增路径的长度,初始时所有值都为0。当采用dfs递归调用时,遇到某个位置(x,y)!=0,则可以直接返回dp[i][j]。class Solution: def dfs(self, i, j): nebr = [[i+1, j], [i-1,j], [i, j+1], [i, j-1]] m...

2020-05-02 11:47:57 125

空空如也

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

TA关注的人

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