自定义博客皮肤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)
  • 问答 (1)
  • 收藏
  • 关注

原创 【LeetCode刷题(中等程度)】662. 二叉树最大宽度

给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空。每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度。示例 1:输出: 4解释: 最大值出现在树的第 3 层,宽度为 4 (5,3,null,9)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-width-of-b

2020-11-28 19:41:55 239

原创 【LeetCode刷题(中等程度)】120. 三角形最小路径和

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。例如,给定三角形:自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/triangl

2020-11-28 11:04:05 132

原创 【LeetCode刷题(中等程度)】142. 环形链表 II

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?示例 1:输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:链表中有一个环,其尾部连接

2020-11-26 20:21:42 102

原创 【LeetCode刷题(简单程度)】环形链表

给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?来源:力扣(LeetCode)链接:https://lee

2020-11-26 19:38:46 80

原创 【LeetCode刷题(中等程度)】398. 随机数索引

给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。注意:数组大小可能非常大。 使用太多额外空间的解决方案将不会通过测试。示例:int[] nums = new int[] {1,2,3,3,3};Solution solution = new Solution(nums);// pick(3) 应该返回索引 2,3 或者 4。每个索引的返回概率应该相等。solution.pick(3);// pick(1) 应该返回 0。因为只有num

2020-11-25 23:14:01 131

原创 【LeetCode刷题(中等程度)】382. 链表随机节点

给定一个单链表,随机选择链表的一个节点,并返回相应的节点值。保证每个节点被选的概率一样。进阶:如果链表十分大且长度未知,如何解决这个问题?你能否使用常数级空间复杂度实现?示例:// 初始化一个单链表 [1,2,3].ListNode head = new ListNode(1);head.next = new ListNode(2);head.next.next = new ListNode(3);Solution solution = new Solution(head);// getR

2020-11-25 23:12:00 193 1

原创 【LeetCode刷题(困难程度)】72. 编辑距离

给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入:word1 = “horse”, word2 = “ros”输出:3解释:horse -> rorse (将 ‘h’ 替换为 ‘r’)rorse -> rose (删除 ‘r’)rose -> ros (删除 ‘e’)示例 2:输入:word1 = “intention”

2020-11-25 11:09:04 171

原创 【LintCode刷题】564. 组合总和 IV

给出一个都是正整数的数组 nums,其中没有重复的数。从中找出所有的和为 target 的组合个数。样例样例1输入: nums = [1, 2, 4] 和 target = 4输出: 6解释:可能的所有组合有:[1, 1, 1, 1][1, 1, 2][1, 2, 1][2, 1, 1][2, 2][4]样例2输入: nums = [1, 2] 和 target = 4输出: 5解释:可能的所有组合有:[1, 1, 1, 1][1, 1, 2][1, 2, 1][2

2020-11-25 10:22:14 145

原创 【C++设计模式】享元模式

模式定义:运用共享技术有效的支持大量细粒度的对象。假设我们要设计一个字体的类,字符的量很大,我们没必要为每一个字符都创建一个字体对象。这时候可以使用享元模式(实现对象池):class Font {private: //unique object key string key;//字体的key //object state //.... public: Font(const string& key){ //..

2020-11-24 19:14:17 76

原创 【LeetCode刷题(困难程度)】440. 字典序的第K小数字

给定整数 n 和 k,找到 1 到 n 中字典序第 k 小的数字。注意:1 ≤ k ≤ n ≤ 109。示例 :输入:n: 13 k: 2输出:10解释:字典序的排列是 [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9],所以第二小的数字是 10。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/k-th-smallest-in-lexicographical-order著作权归领扣网络所有。商

2020-11-23 21:04:39 124

原创 【LeetCode刷题(中等程度)】386. 字典序排数

给定一个整数 n, 返回从 1 到 n 的字典顺序。例如,给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据 n 小于等于 5,000,000。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lexicographical-numbers著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路:首先理解什么叫字典顺序,其实这是类

2020-11-23 20:27:32 114

原创 【LeetCode刷题(中等程度)】92. 反转链表 II

反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-linked-list-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2020-11-23 19:53:23 92

转载 【C++设计模式】单例模式

具体内容可以看这个大哥写的:C++单例模式

2020-11-23 19:22:14 57

原创 【LeetCode刷题(中等程度)】22. 括号生成

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/generate-parentheses著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路:这种必须尝试遍历所有可能,所以是回溯法。class S

2020-11-22 19:38:46 74

原创 【C++设计模式】构建器模式

模式定义:将一个复杂对象的构建与其表示相分离,使得同样的构建过程(稳定)可以创建不同的表示(变化)。该模式和模板方法模式很相似,但是这里使用的地方是在类初始化的过程中。例如我们要造一个房子,那么很有可能造房子的步骤是稳定的(例如先打地基,然后修墙,然后修窗户等等),但是怎么打地基,怎么修墙这些具体步骤可能会有变化,所以我们可以这样设计,将房子类的初始化分几个类来实现:House类:class House{ //....};建造房子的HouseBuilder类:class Hou

2020-11-22 16:27:52 300 3

原创 【C++设计模式】原型模式

模式定义:使用原型实例指定创建对象的种类。然后通过拷贝这些原型来创建新的对象。该模式其实是工厂模式的一种变体模式,仍然以工厂模式中的文件分割器为例,如果文件分割器本身就是一个比较复杂的对象,并且拥有稳定的接口,那么每一次调用Button函数中的分割时,不一定都需要新建一个对象,可以直接克隆即可。Client类class MainForm : public Form{ ISplitter* prototype;//原型对象public: MainForm(ISplit

2020-11-22 15:54:17 67

原创 【C++设计模式】工厂模式

模式定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使得一个类的实例化延迟(目的:解耦合,手段:虚函数)到子类中去。我们还是来看一个实际例子:例如我们要设计一个文件分割的程序,我们在主窗口中点击按钮,实现文件分割的功能。但是我们要分割的文件可能是文本文件,也可能是二进制文件,也可能是视频文件等等,那么我们最初写下的代码就可能像下面一样:MainForm类:class MainForm : public Form{ TextBox* txtFilePa

2020-11-19 16:24:50 133

原创 【LeetCode刷题(中等程度)】1143. 最长公共子序列

给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没有公共子序列,则返回 0。示例 1:输入:text1 = “abcde”, text2 = “ace”

2020-11-19 10:41:55 127

原创 【LeetCode刷题(困难程度)】42. 接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 2:输入:height = [4,2,0,3,2,5]输出:9来源:力扣(LeetCode)链接:https://leetcode-cn.com/pr

2020-11-18 21:32:06 238

原创 【C++设计模式】桥模式

模式定义:将抽象部分(业务功能)与实现部分(平台实现)分离,使它们都可以独立的变化。假设我们需要实现一个这样的功能,有一个能够发送信息的Messager类,可以实现登录、发送消息、发送照片、播放音乐、画图、写入文字、连接等等功能。但是我们可能会在不同的平台(PC端和移动端)实现它,而且实现的版本也是不同的,一个是完美的版本,即以上功能都有,一个是精简版,只有部分功能。那么我们可能写出如下代码:class Messager{public: virtual void Login(string

2020-11-18 19:14:29 121

原创 【C++设计模式】装饰器模式

模式定义:动态(组合)的给一个对象增加一些额外的职责,就增加功能而言Decorator模式比生成子类(继承)更为灵活(消除重复代码 & 减少子类个数)。假设我们需要设计如下一个功能的程序:1.对各种流的读取、写入和定位2.添加对各种流的加密以及缓冲或者又加密又缓冲的功能。那么我们最初设计的类(版本一)可能如下://业务操作class Stream{public: virtual char Read(int number)=0; virtual void Seek(i

2020-11-18 16:56:33 157

原创 【LeetCode刷题(中等程度)】148. 排序链表

给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?示例 1:输入:head = [4,2,1,3]输出:[1,2,3,4]示例 2:输入:head = [-1,5,3,4,0]输出:[-1,0,3,4,5]示例 3:输入:head = []输出:[]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sort-list

2020-11-17 21:21:40 166

原创 【LeetCode刷题(困难程度)】25. K 个一组翻转链表

给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->1->4->5说明:你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内部的值,而是需要实

2020-11-17 20:13:46 180

原创 【C++设计模式】观察者模式

模式定义:定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生变化时,所有依赖与它的对象都得到通知并自动更新。UML图:代码示例:#include <iostream>#include <string>#include <list>using namespace std; class Subject;//抽象观察者class Observer{protected: string name; Su.

2020-11-17 18:17:37 82

原创 【C++设计模式】策略模式

模式定义:定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立与使用它的客户程序(稳定)而变化(扩展,子类化)例如我们要设计一个计算各个国家税费的程序:enum TaxBase { CN_Tax, US_Tax, GR_Tax};class SalesOrder{public: double CalculateTax() { //... if (tax == CN_Tax) { //CN....... } else i

2020-11-17 16:32:33 163

原创 【LeetCode刷题(中等程度)】221. 最大正方形

在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内,找到只包含 ‘1’ 的最大正方形,并返回其面积。示例:输入:输出:4思路类似于上面图片,我们可以从最开始那个位置开始推起。定义状态:状态f[i][j]表示为以matrix[i][j]作为右下角元素的正方形的边长。例如标注为2的位置,其左边,上面,斜上位置的元素都是1,所以该位置表示的边长为:min(左边,上面,斜上)+1所以转移方程为:f[i][j] = min(f[i-1][j],f[i-1][j-1],f[i][j-1]) + 1

2020-11-16 20:08:07 122

原创 【LeetCode刷题(中等程度)】199. 二叉树的右视图

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-right-side-view著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路:层次遍历打印每层的最后一个节点就可以了。/** * Definition for

2020-11-16 19:05:23 66

原创 【C++设计模式】模板方法模式

模板方法:定义一个操作中的算法骨架(稳定),而将一些步骤延迟到子类中实现。模板方法使得子类可以再不改变一个算法的结构即可重新定义该算法的某些特定步骤(变化)。通过把不变的行为搬移到基类中,去除了子类的重复代码,提供了一个很好的代码复用解决方案。Libary类:class Libary{public: void run()//稳定的算法框架 { step1(); step2(); step3(); step4(); step5(); }private: void step

2020-11-16 17:13:50 69

原创 【LeetCode刷题(简单程度)】53. 最大子序和

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-subarray著作权归领扣网络所有。商业转载请联系官方授权,非商

2020-11-15 21:01:39 137

原创 【LeetCode刷题(中等程度)】33. 搜索旋转排序数组

给你一个整数数组 nums ,和一个整数 target 。该整数数组原本是按升序排列,但输入时在预先未知的某个点上进行了旋转。(例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请你在数组中搜索 target ,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。示例 1:输入:nums = [4,5,6,7,0,1,2], target = 0输出:4示例 2:输入:nums = [4,5,6,7,0,1,2], target = 3输出:-

2020-11-15 20:43:06 170

原创 【LeetCode刷题(中等程度)】695. 岛屿的最大面积

给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,

2020-11-14 21:07:33 163

原创 LeetCode刷题(中等程度)31. 下一个排列

实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。示例 1:输入:nums = [1,2,3]输出:[1,3,2]示例 2:输入:nums = [3,2,1]输出:[1,2,3]示例 3:输入:nums = [1,1,5]输出:[1,5,1]示例 4:输入:nums = [1]输出:[1]提示:1 <= nums.len

2020-11-14 20:49:07 156

原创 【LeetCode刷题(困难程度)】23. 合并K个升序链表

给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:lists =...

2020-11-13 22:11:43 305

原创 【LeetCode刷题(中等程度)】973. 最接近原点的 K 个点

我们有一个由平面上的点组成的列表 points。需要从中找出 K 个距离原点 (0, 0) 最近的点。(这里,平面上两点之间的距离是欧几里德距离。)你可以按任何顺序返回答案。除了点坐标的顺序之外,答案确保是唯一的。示例 1:输入:points = [[1,3],[-2,2]], K = 1输出:[[-2,2]]解释:(1, 3) 和原点之间的距离为 sqrt(10),(-2, 2) 和原点之间的距离为 sqrt(8),由于 sqrt(8) < sqrt(10),(-2, 2) 离原点

2020-11-09 19:57:06 97

原创 【LeetCode刷题(数据库)】183. 从不订购的客户

某网站包含两个表,Customers 表和 Orders 表。编写一个 SQL 查询,找出所有从不订购任何东西的客户。Customers 表:±—±------+| Id | Name |±—±------+| 1 | Joe || 2 | Henry || 3 | Sam || 4 | Max |±—±------+Orders 表:±—±-----------+| Id | CustomerId |±—±-----------+| 1 | 3

2020-11-01 15:08:44 160

RDM_v2.2 屏幕分辨率调整工具.dmg

RDM_v2.2 屏幕分辨率调整工具.dmg

2020-12-30

tass-sgi-stl-2.91.57-source.zip

STL源码剖析对应的全部源码 与书上的东西是对应的,可以用来学习。新手上传5个积分意思意思就行,希望可以帮助到需要的人。

2020-08-21

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

TA关注的人

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