自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【双指针】26. 删除有序数组中的重复项 & 27. 移除元素 & 80. 删除排序数组中的重复项 II & 283. 移动零

26. 删除有序数组中的重复项题目26. 删除有序数组中的重复项给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:输入:nums = [1,1,2]输出:2, nums = [1,2]解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。示例 2:输

2021-03-22 13:04:09 242

转载 【DFS】200. 岛屿数量 & 130. 被围绕的区域 & 463. 岛屿的周长 & 695. 岛屿的最大面积 & 733. 图像渲染

200. 岛屿数量题目200. 岛屿数量给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [[“1”,“1”,“1”,“1”,“0”],[“1”,“1”,“0”,“1”,“0”],[“1”,“1”,“0”,“0”,“0”],[“0”,“0”,“0”,“0”,“0”]]输出:1示例 2:输入:g

2021-03-17 23:58:54 350

原创 【单调栈】84. 柱状图中最大的矩形 & 85. 最大矩形

84. 柱状图中最大的矩形85. 最大矩形

2021-03-16 23:12:44 220

原创 【二分法】153. 寻找旋转排序数组中的最小值 & 剑指 Offer 11. 旋转数组的最小数字 & 154 & 33. 搜索旋转排序数组 & 81. 搜索旋转排序数组 II

剑指 Offer 11. 旋转数组的最小数字153. 寻找旋转排序数组中的最小值154. 寻找旋转排序数组中的最小值 II33. 搜索旋转排序数组

2021-03-14 23:16:21 126

转载 【动态规划】509. 斐波那契数 & 70. 爬楼梯 & 1137. 第 N 个泰波那契数

509. 斐波那契数题目509. 斐波那契数剑指 Offer 10- I. 斐波那契数列斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你 n ,请计算 F(n) 。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1示例 2:输入:3输

2021-03-14 22:54:31 138

原创 【二分查找】35. 搜索插入位置 & 278. 第一个错误的版本 & 374. 猜数字大小 & 34. 在排序数组中查找元素的第一个和最后一个位置

35. 搜索插入位置278. 第一个错误的版本374. 猜数字大小34. 在排序数组中查找元素的第一个和最后一个位置

2021-03-11 12:41:22 144

转载 【二分查找】74. 搜索二维矩阵 & 剑指 Offer 04. 二维数组中的查找 & 240. 搜索二维矩阵 II

74. 搜索二维矩阵题目74. 搜索二维矩阵编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。解法注意到输入的 m x n 矩阵可以视为长度为 m x n的有序数组。该二维数组可以拉长为一个有序的一维数组。由于该 虚 数组的序号可以由下式方便地转化为原矩阵中的行和列 (我们当然不会真的创建一个新数组) ,该有序数组非常适合二分查找。row = idx // n , col =

2021-03-10 01:26:24 149

原创 【Java】TreeSet用法以及实现

ff

2021-03-08 20:54:15 135

原创 【数组】剑指 Offer 03. 数组中重复的数字 & 217. 存在重复元素 & 219. 存在重复元素 II & 220. 存在重复元素 III

剑指 Offer 03. 数组中重复的数字题目找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3解法Set辅助法由于只需要找出数组中任意一个重复的数字,因此遍历数组,遇到重复的数字即返回。为了判断一个数字是否重复遇到,使用集合存储已经遇到的数字,如果遇到的一个

2021-03-07 13:03:40 129

原创 【postgresql】namespace.c代码解析

DefineRelationObjectAddressDefineRelation(CreateStmt *stmt, char relkind, Oid ownerId, ObjectAddress *typaddress, const char *queryString){ /* * Look up the namespace in which we are supposed to create the relation, * check we have permission

2021-03-05 20:04:03 385

转载 【database】数据库schema概念解读

schema概念定义数据库中的schema有多种不同含义和实现:数据库中的数据模型(data model)数据库中的整个数据结构(data structure)和程序(program)命名空间(namespace)是SQL的一个元素1. Data Model数据库schema的含义之一是数据库中表之间的结构,具体来说有表、数据类型、主键和唯一键以及外键约束。2.数据库实现更抽象的概念上,数据库schema指的是整个数据库元素:表、约束、视图、存储过程和数据类型等。3.Namespa

2021-03-04 17:43:55 5404 1

原创 【postgresql】schema(namespace) ddl代码解析

非v

2021-03-03 11:16:44 1150 1

原创 【postgresql】创建删除数据库代码分析

创建数据库接口CREATE DATABASECREATE DATABASE – 创建一个新数据库CREATE DATABASE name [ [ WITH ] [ OWNER [=] user_name ] [ TEMPLATE [=] template ] [ ENCODING [=] encoding ] [ LC_COLLATE [=] lc_collate ] [ LC_CTYPE [=] lc_c

2021-03-01 18:14:02 356

原创 【重构】读书笔记 11-12章

第11章 重构API11.1 将查询函数和修改函数分离(Separate Queryfrom Modifier)function getTotalOutstandingAndSendBill() {const result = customer.invoices.reduce((total, each) => each.amount + total, 0);sendBill();return result;}–>function totalOutstanding() { r

2021-02-27 12:54:19 748

原创 【树】235. 二叉搜索树的最近公共祖先 & 236. 二叉树的最近公共祖先

235. 二叉搜索树的最近公共祖先236. 二叉树的最近公共祖先

2021-02-26 00:03:09 78

转载 【树】112. 路径总和 & 113. 路径总和 II & 129. 求根到叶子节点数字之和 & 257. 二叉树的所有路径 && 437. 路径总和 III & 687. 最长同值路径

112. 路径总和题目路径总和113. 路径总和 II题目路径总和 II124. 二叉树中的最大路径和题目二叉树中的最大路径和129. 求根到叶子节点数字之和题目求根到叶子节点数字之和257. 二叉树的所有路径题目二叉树的所有路径437. 路径总和 III题目路径总和 III687. 最长同值路径题目最长同值路径...

2021-02-26 00:00:41 121

转载 【树】104. 二叉树的最大深度 & 111. 二叉树的最小深度 & 559. N 叉树的最大深度 & 110. 平衡二叉树

104. 二叉树的最大深度题目104. 二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回它的最大深度 3 。111. 二叉树的最小深度题目二叉树的最小深度559. N 叉树的最大深度题目N 叉树的最大深度110. 平衡二叉树题目平衡二叉树...

2021-02-25 16:00:27 167

原创 【重构】读书笔记 7-10章

第7章 封装7.1 封装记录(Encapsulate Record)organization = {name: "Acme Gooseberries", country: "GB"};–>class Organization { constructor(data) {  this._name = data.name;  this._country = data.country; } get name() {return this._name;} set name(arg) {th

2021-02-25 11:29:04 154

转载 【树】100. 相同的树 & 101. 对称二叉树 & 226. 翻转二叉树

100. 相同的树题目给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入:p = [1,2,3], q = [1,2,3]输出:true示例 2:输入:p = [1,2], q = [1,null,2]输出:false解法深度优先搜索如果两个二叉树都为空,则两个二叉树相同。如果两个二叉树中有且只有一个为空,则两个二叉树一定不相同。如果两个二叉树都不为空,那么首先判断它们的根节

2021-02-24 10:13:05 101

原创 【重构】读书笔记 1-6章

序言识别坏味道、测试先行、行为保持的变更动作,是重构的基本功。注面向对象、TDD、重构之类基本功者寥寥。以重构方式改进软件质量。重构的“十六字心法”,这十六字心法如是说:旧的不变, 新的创建, 一步切换, 旧的再见。什么是重构重构(refactoring)是这样一个过程: 在不改变代码外在行为的前提 下,对代码做出修改,以改进程序的内部结构。重构是一种经千锤百炼形成的有 条不紊的程序整理方法,可以最大限度地减小整理过程中引入错误的概率。本质上说,重构就是在代码写好之后改进它的设计。重构

2021-02-22 00:05:42 562 2

转载 【单调栈】316. 去除重复字母 & 402. 移掉K位数字

316. 去除重复字母题目316. 去除重复字母给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。注意:该题与 1081 相同示例 1:输入:s = “bcabc”输出:“abc”示例 2:输入:s = “cbacdcbc”输出:“acdb”解法字典序是指按照单词出现在字典的顺序比较两个字符串的方法。例如“abc”的字典序在“acbd”的前面。如果一个字母只出现一次,这个字母必须被选取。按照

2021-02-20 09:54:43 153

转载 【栈】227. 基本计算器 II & 224. 基本计算器

227. 基本计算器 II题目227. 基本计算器 II实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。示例 1:输入: “3+2*2”输出: 7示例 2:输入: " 3/2 "输出: 1示例 3:输入: " 3+5 / 2 "输出: 5解法栈利用栈将四则运算化简成加法运算此算法的思路很简单,先把乘除法的值计算出来,最终将所有的运算简化成只有加法。先跳过空格出现了数字

2021-02-14 14:08:18 103

转载 【栈 & 双指针】844. 比较含退格的字符串

844. 比较含退格的字符串题目844. 比较含退格的字符串给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。注意:如果对空文本输入退格字符,文本继续为空。示例 1:输入:S = “ab#c”, T = “ad#c”输出:true解释:S 和 T 都会变成 “ac”。示例 2:输入:S = “ab##”, T = “c#d#”输出:true解释:S 和 T 都会变成 “”。示例 3:输入:S = “a##c”,

2021-02-14 12:37:02 157

转载 【栈】1021. 删除最外层的括号

1021. 删除最外层的括号题目1021. 删除最外层的括号如果有效字符串 S 非空,且不存在将其拆分为 S = A+B 的方法,我们称其为原语(primitive),其中 A 和 B 都是非空有效括号字符串。给出一个非空有效字符串 S,考虑将其进行原语化分解,使得:S = P_1 + P_2 + … + P_k,其中 P_i 是有效括号字符串原语。对 S 进行原语化分解,删除分解中每个原语字符串的最外层括号,返回 S 。示例 1:输入:"(()())(())"输出:"()()()"解释:

2021-02-14 11:15:17 107

转载 【栈】71. 简化路径

71. 简化路径题目71. 简化路径给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/’ 开头),请你将其转化为更加简洁的规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,’//’)都被视为单个斜杠 ‘/’ 。 对于此问题,任何其他格式的点(例如,’…’)均被视为文件/目录名称。请注意,返回的 规范路径 必须遵循下述格

2021-02-09 11:47:28 290

原创 【栈】1047. 删除字符串中的所有相邻重复项 & 1544. 整理字符串

1047. 删除字符串中的所有相邻重复项题目1047. 删除字符串中的所有相邻重复项给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:“abbaca”输出:“ca”解释:例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “

2021-02-07 22:49:06 150

原创 【栈】150. 逆波兰表达式求值

150. 逆波兰表达式求值题目150. 逆波兰表达式求值根据 逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: [“2”, “1”, “+”, “3”, “*”]输出: 9解释: 该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2:输入: [“4”,

2021-02-07 22:35:08 64

原创 【栈】682. 棒球比赛

682. 棒球比赛题目682. 棒球比赛你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops,其中 ops[i] 是你需要记录的第 i 项操作,ops 遵循下述规则:x - 表示本回合新获得分数 x“+” - 表示本回合新获得的得分是前两次得分的总和。题目数据保证记录此操作时前面总是存在两个有效的分数。“D” - 表示本回合新获得的得分是前一次得分的两倍。题目数据保证记

2021-02-07 21:29:25 109

转载 【单调栈】496. 下一个更大元素 I & 739. 每日温度

496. 下一个更大元素 I题目496. 下一个更大元素 I给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。示例 1:输入: nums1 = [4,1,2], nums2 = [1,3,4,2].输出: [-1,3,-1]解释

2021-02-07 19:30:19 85

转载 【栈】225. 用队列实现栈 & 232. 用栈实现队列

225. 用队列实现栈题目请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通队列的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。注意:你只能使用队列的基本操作 —— 也就是 push to back、peek/pop

2021-02-06 16:53:50 142

原创 【链表】155.最小栈

155.最小栈题目155.最小栈设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:[“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”][[],[-2],[0],[-3],[],[],[],[]]输出:[n

2021-02-04 19:44:22 86

转载 【栈】20. 有效的括号

20. 有效的括号题目20. 有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”输出:false示例 5:输入:s = “{[]}

2021-02-04 12:55:59 63

原创 【链表】【单调栈】1019. 链表中的下一个更大节点

1019. 链表中的下一个更大节点题目1019. 链表中的下一个更大节点给出一个以头节点 head 作为第一个节点的链表。链表中的节点分别编号为:node_1, node_2, node_3, … 。每个节点都可能有下一个更大值(next larger value):对于 node_i,如果其 next_larger(node_i) 是 node_j.val,那么就有 j > i 且 node_j.val > node_i.val,而 j 是可能的选项中最小的那个。如果不存在这样的 j

2021-02-04 00:52:11 115 1

转载 【链表】817. 链表组件

817. 链表组件题目817. 链表组件给定链表头结点 head,该链表上的每个结点都有一个 唯一的整型值 。同时给定列表 G,该列表是上述链表中整型值的一个子集。返回列表 G 中组件的个数,这里对组件的定义为:链表中一段最长连续结点的值(该值必须在列表 G 中)构成的集合。示例 1:输入:head: 0->1->2->3G = [0, 1, 3]输出: 2解释:链表中,0 和 1 是相连接的,且 G 中不包含 2,所以 [0, 1] 是 G 的一个组件,同理 [3

2021-02-02 12:54:29 142

转载 【链表】707. 设计链表

707. 设计链表题目707. 设计链表设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添加一个值为

2021-01-30 17:31:44 162

转载 【链表】2.两数相加 & 445. 两数相加 II

题目2. 两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,9],

2021-01-29 16:25:35 76

转载 【链表】24.两两交换链表中的节点 & 25. K 个一组翻转链表

fff

2021-01-29 11:44:32 107

原创 【链表】143. 重排链表

题目给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5, 重新排列为 1->5->2->4->3.解法寻找链表中点 + 链表逆序 + 合并链表根据题意

2021-01-27 00:59:13 213

原创 【链表】1721. 交换链表中的节点

题目1721. 交换链表中的节点解法 public ListNode swapNodes(ListNode head, int k) { ListNode fast = head; ListNode slow = head; for (int i = 0; i < k - 1; i++) { fast = fast.next; } ListNode first = fast; while

2021-01-26 20:22:30 145

转载 【链表】328. 奇偶链表 & 61.旋转链表 & 86. 分隔链表 & 725 分隔链表

题目奇偶链表解法public ListNode oddEvenList(ListNode head) { if (head == null) { return head; } ListNode evenHead = head.next; ListNode odd = head; ListNode even = head.next; while (even != null &amp

2021-01-26 20:03:00 141

UML复习PPT

本PPT是UML的复习资料,有各种图的例题,有助于UML的复习

2015-07-11

空空如也

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

TA关注的人

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