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

原创 LeetCode.天际线问题

概述城市的天际线是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。给你所有建筑物的位置和高度,请返回由这些建筑物形成的 天际线 。每个建筑物的几何信息由数组 buildings 表示,其中三元组 buildings[i] = [lefti, righti, heighti] 表示:lefti 是第 i 座建筑物左边缘的 x 坐标。righti 是第 i 座建筑物右边缘的 x 坐标。heighti 是第 i 座建筑物的高度。天际线 应该表示为由 “关键点” 组成的列表,格式 [[x1,y1]

2022-01-20 23:14:23 4632

原创 LeetCode.最长连续序列

概述给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。示例 1:输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。示例 2:输入:nums = [0,3,7,2,5,8,4,6,0,1]输出:9提示:· 0 <= nums.length <= 10^5· -10^9 <= num

2022-01-15 18:49:16 132

原创 LeetCode.两个数组的交集 II

概述给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]提示:· 1 <= nums1.length, nums2.leng

2022-01-15 11:48:19 3205

原创 LeetCode.存在重复元素

概述给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true解题代码class Solution { public boolean containsDuplicate(int[] nums

2022-01-14 18:56:08 91

原创 LeetCode.合并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 = []

2022-01-14 18:39:59 72

原创 LeetCode.加油站

概述在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i]升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非负数。示例 1:输入: gas = [1,2,3,4,5]cost = [3,4,5,1,2]

2022-01-13 20:53:36 58

原创 LeetCode.岛屿数量

概述给你一个由 '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:输入:grid = [ [

2022-01-13 17:46:21 71

原创 LeetCode.对称二叉树

概述给你一个二叉树的根节点 root , 检查它是否轴对称。示例 1:输入:root = [1,2,2,3,4,4,3]输出:true示例 2:输入:root = [1,2,2,null,3,null,3]输出:false提示:· 树中节点数目在范围 [1, 1000] 内· -100 <= Node.val <= 100解题代码递归/** * Definition for a binary tree node. * public class TreeNo

2022-01-12 15:47:22 159

原创 LeetCode.二叉树的锯齿形层序遍历

概述给你二叉树的根节点root,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。示例 1:输入:root = [3,9,20,null,null,15,7]输出:[[3],[20,9],[15,7]]示例 2:输入:root = [1]输出:[[1]]示例 3:输入:root = []输出:[]提示:· 树中节点数目在范围 [0, 2000] 内· -100 <= Node.val <= 100解题

2022-01-12 14:58:30 147

原创 LeetCode.电话号码的字母组合

概述给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意1不对应任何字母。示例 1:输入:digits = "23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]示例 2:输入:digits = ""输出:[]示例 3:输入:digits = "2"输出:["a","b","c"]提示:· 0 <= digits.length <

2022-01-10 22:10:28 44

原创 LeetCode.外观数列

概述给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:countAndSay(1) = "1"countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。前五项如下:1. 12. 113. 214. 12115. 111221第一项是数字 1 描述前一项,这个数是 1

2022-01-09 20:56:12 64

原创 LeetCode.颜色分类

概述给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。示例 1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]示例 2:输入:nums = [2,0,1]输出:[0,1,2]示例 3:输入:nums = [0]输出:[0]示例 4:输入:nums = [1]输出:[1]解题思路如果数组长度为n

2022-01-08 20:50:39 72

原创 LeetCode.四数相加Ⅱ

概述给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:0 <= i, j, k, l < nnums1[i] + nums2[j] + nums3[k] + nums4[l] == 0元组示例 1:输入:nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2]输出:2解释:两个元组如下:1. (0, 0, 0,

2022-01-07 14:52:05 428

原创 LeetCode.两整数之和

概述给你两个整数 a 和 b ,不使用 运算符 + 和 - ​​​​​​​,计算并返回两整数之和。示例 1:输入:a = 1, b = 2输出:3示例 2:输入:a = 2, b = 3输出:5提示:· -1000 <= a, b <= 1000解题思路既然说了不能使用+和-,那么第一时间就要想到使用位运算,设两个数a和b,则a与b的不进位和为a⨁\bigoplus⨁b,a与b的进位为(a&b)<<1,将这两个数相加即为最终结果,但不使用+和-如何

2022-01-05 22:09:44 277

原创 LeetCode.相交链表

概述给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据保证整个链式结构中不存在环。注意,函数返回结果后,链表必须保持其原始结构。自定义评测:评测系统 的输入如下(你设计的程序 不适用 此输入):intersectVal - 相交的起始节点的值。如果不存在相交节点,这一值为 0listA - 第一个链表listB - 第二个链表skipA - 在 lis

2022-01-04 21:33:37 72

原创 LeetCode.快乐数

编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回true ;不是,则返回false 。示例 1:输入:n = 19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 = 1示例 2:输入:n

2022-01-03 20:17:24 297

原创 LeetCode.乘最多水的容器

给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例 2:输入:hei

2021-12-24 20:45:00 99

原创 Leetcode.有序矩阵中第 K 小的元素

给你一个 n x n 矩阵 matrix ,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是 排序后 的第 k 小元素,而不是第 k 个 不同 的元素。示例 1:输入:matrix = [[1,5,9],[10,11,13],[12,13,15]], k = 8输出:13解释:矩阵中的元素为 [1,5,9,10,11,12,13,13,15],第 8 小元素是 13示例 2:输入:matrix = [[-5]], k = 1输出:-5提示:· n == mat

2021-12-23 22:48:09 92

原创 LeetCode.奇偶链表

给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL示例 2:输入: 2->1->3->5->6->4-

2021-12-20 19:40:43 129

原创 Leetcode.寻找重复数

给定一个包含 n + 1 个整数的数组 nums ,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 ,找出 这个重复的数 。你设计的解决方案必须不修改数组 nums 且只用常量级 O(1) 的额外空间。示例 1:输入:nums = [1,3,4,2,2]输出:2示例 2:输入:nums = [3,1,3,4,2]输出:3示例 3:输入:nums = [1,1]输出:1示例 4:输入:nums = [1,1,2

2021-12-19 16:04:49 654

原创 LeetCode.二叉树的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。示例1:输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:3解释:节点 5 和节点 1 的最近公共祖先是节点 3 。示例2:输入:root = [3,5,1,6,2,0,8,null,null,

2021-12-16 20:42:37 49

原创 Leetcode.合并两个有序链表

题目描述:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1 = [], l2 = []输出:[]示例3:输入:l1 = [], l2 = [0]输出:[0]提示:- 两个链表的节点数目范围是 [0, 50]- 100 <= Node.val <= 100- l1 和 l2 均按 非递减顺序 排

2021-12-16 19:27:07 835

原创 美团校招题 小团的装饰物

小团正在装饰自己的书桌,他的书桌上从左到右有 m 个空位需要放上装饰物。商店中每个整数价格的装饰物恰好有一种,且每种装饰物的数量无限多。小团去商店的时候,想到了一个购买方案,他要让右边的装饰物价格是左边的倍数。用数学语言来说,假设小团的 m 个装饰物价格为 a[1], a[2], …, a[m] ,那么对于任意的 1≤i≤j≤m ,a[j] 是 a[i] 的倍数。小团是一个节约的人,他希望最贵的装饰物不超过 n 元。现在,请你计算小团有多少种购买的方案?格式:输入:- 输入包含两个数,n 和 m

2021-12-09 21:35:46 224

原创 美团校招题 小团的默契游戏

小团从某不知名论坛上突然得到了一个测试默契度的游戏,想和小美玩一次来检验两人的默契程度。游戏规则十分简单,首先给出一个长度为 n 的序列,最大值不超过 m 。小团和小美各自选择一个 [1,m] 之间的整数,设小美选择的是 l ,小团选择的是 r ,我们认为两个人是默契的需要满足以下条件:l 小于等于 r 。对于序列中的元素 x ,如果 0<x<l ,或 r<x<m+1 ,则 x 按其顺序保留下来,要求保留下来的子序列单调不下降。小团为了表现出与小美最大的默契,因此事先做了功课

2021-12-09 21:09:18 423

原创 美团校招题 小团无路可逃

小团惹小美生气了,小美要去找小团“讲道理”。小团望风而逃,他们住的地方可以抽象成一棵有n个结点的树,小美位于 x 位置,小团位于 y 位置。小团和小美每个单位时间内都可以选择不动或者向相邻的位置转移,很显然最终小团会无路可逃,只能延缓一下被“讲道理”的时间,请问最多经过多少个单位时间后,小团会被追上。输入:- 输入第一行包含三个整数 n,x,y,分别表示树上的结点数量,小美所在的位置和小团所在的位置。- 接下来有 n-1 行,每行两个整数 u,v,表示 u 号位置和 v 号位置之间有一条边,即 u 号

2021-12-08 15:39:32 273

原创 OJ做题建议使用BufferReader来读取输入而不是Scanner

java.util.Scanner类是一个简单的文本扫描类,它可以解析基本数据类型和字符串。它本质上是使用正则表达式去读取不同的数据类型。Java.io.BufferedReader类为了能够高效的读取字符序列,从字符输入流和字符缓冲区读取文本。BufferReader的读取效率比Scanner高上许多,用Scanner做题时经常会碰到时间超时,而BufferReader可以很好的解决这个问题。...

2021-12-07 22:41:44 533

原创 LeetCode 269.火星词典

现有一种使用英语字母的外星文语言,这门语言的字母顺序与英语顺序不同。给定一个字符串列表 words ,作为这门语言的词典,words 中的字符串已经 按这门新语言的字母顺序进行了排序 。请你根据该词典还原出此语言中已知的字母顺序,并 按字母递增顺序 排列。若不存在合法字母顺序,返回 "" 。若存在多种可能的合法字母顺序,返回其中 任意一种 顺序即可。字符串 s 字典顺序小于 字符串 t 有两种情况:在第一个不同字母处,如果 s 中的字母在这门外星语言的字母顺序中位于 t 中字母之前,那么 s 的字

2021-12-04 14:06:21 473

原创 LeetCode 752.打开转盘锁

这题其实就是一张无向图,我们要求的就是初始数字’0000’到目标数字target的最短路径,而死亡数组可以看作是图中已经经过的顶点。单向BFS实现class Solution { public int openLock(String[] deadends, String target) { if("0000".equals(target))return 0; HashSet<String> visited=new HashSet<>().

2021-12-01 21:12:39 189

原创 LeetCode 494.目标和

这题最主要的是要用target求出前面为 ‘ - ’ 的数的和或者前面为‘ + ’的数的和,不然如果想用动态规划来解决的话没法确定列有多大,因此没法创建数组。设前面为 ‘ - ’ 的数的和negNums,前面为‘ + ’的数的和posNums,sum为nums数组的和,negNums+posNums=sum,-negNums+posNums=target,因此posNums=(sum+target)/2,动态规划数组的列大小也可以确定下来。class Solution { public int.

2021-11-29 22:13:53 48

原创 ArrayDeque与LinkedList中插入null的差异

最近做题时发现用ArrayDeque类插入null时会报NullPointerException的错误,而用LinkedList类则不会。查了下两个类实现offer方法的源码,发现ArrayDeque类里是对offer这个方法特意进行了是否为null的判断而LinkedList则没有进行这个判断至于为啥,我也不知道,反正如果要对Deque进行加入null元素的操作,选择LinkedList类。...

2021-11-15 21:37:40 1430 3

原创 为什么Java中别用Stack类来实现栈

Java官方已经在Stack类中注明了不推荐使用Stack类来实现栈。但为什么不推荐使用Stack这个类呢?这个类最大的问题源于继承了 Vector 类,因此Stack类也继承了Vector类的所有公有方法。而Vector类是有能力在数组中的任何位置添加或者删除元素的,因此Stack 也有这个能力。但很明显,栈不应该具有在任何位置添加或者删除元素的能力,封装的一大意义,就是向用户屏蔽用户不需要的操作。否则,用户可能会有意无意地调用这些操作,造成很多不必要的BUG。...

2021-11-10 22:59:00 1113

原创 URI和URL

URL是Uniform Resource Locator的缩写,即为统一资源定位符。URI是Uniform Resource Identifier的缩写,即为统一资源标识符。两个词在意思上相近,但并不是同一个东西。准确的说URL是URI的一个子集,URI一共包含两个子集,一个是URL,另一个是URN(Uniform Resource Name),即统一资源名。简单来说的话,URI是一个抽象的定义,不管怎么表示,只要能定位一个资源,那这个表示方法就叫做URI,在官方定义中包含了两种定位方法:1.UR

2021-10-27 21:21:53 118

原创 垃圾收集器与内存分配策略(二)

1.4 经典垃圾收集器《Java虚拟机规范》中对垃圾收集器应该如何实现并没有做出任何规定,因此不同的厂商、不同版本的虚拟机所包含的垃圾收集器都可能会有很大差别,不同的虚拟机一般也都会提供各种参数供用户根据自己的应用特点和要求组合出各个内存分代所使用的收集器。本节标题中“经典”其实是讨论范围的限定语,这里讨论的是在JDK 7 Update 4之后(在这个版本中正式提供了商用的G1收集器,此前G1仍处于实验状态)、JDK 11正式发布之前,OracleJDK中的HotSpot虚拟机所包含的全部可用的垃圾收集

2021-10-21 19:31:34 128

原创 垃圾收集器与内存分配策略(一)

1.1 对象已死?在堆里面存放着Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还“存活”着,哪些已经“死去”(“死去”即不可能再被任何途径使用的对象)了。1.1.1 引用技术算法很多教科书判断对象是否存活的算法是这样的:在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。客观地说,引用计数算法(Reference Counting)虽然占用了一些额外的内存空

2021-10-19 22:05:46 143

原创 Java内存区域

Java内存区域1.1运行时数据区域​  Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域(如图1-1)。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。​图1-1 Java虚拟机运行时数据区1.1.1 程序计数器​  程序计数器可以看作是当前线程所执行的字节码的行号指示器。在Java虚拟机的概念模型机里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字

2021-10-18 16:30:07 78

空空如也

空空如也

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

TA关注的人

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