
leetcode
我只会html
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
11.盛最多水的容器(双指针法)
container-with-most-water题目描述给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2...原创 2020-03-27 12:40:21 · 117 阅读 · 0 评论 -
15.三数之和
题目描述给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]代码package...原创 2020-03-26 15:21:22 · 171 阅读 · 0 评论 -
22. 括号生成(回溯法)
题目描述给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]代码package pid22;import java.util.List;import java.util.ArrayList;publ...原创 2020-03-26 13:46:58 · 329 阅读 · 0 评论 -
892.三维形体的表面积
surface-area-of-3d-shapes题目描述在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。请你返回最终形体的表面积。示例 1:输入:[[2]]输出:10示例 2:输入:[[1,2],[3,4]]输出:34示例 3:输入:[[1,0],...原创 2020-03-25 23:04:20 · 133 阅读 · 0 评论 -
165.比较版本号
compare-version-numbers题目描述比较两个版本号 version1 和 version2。如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。你可以假设版本字符串非空,并且只包含数字和 . 字符。. 字符不代表小数点,而是用于分隔数字序列。例如,2.5 不是“两个半”,也不...原创 2020-03-24 16:03:42 · 146 阅读 · 0 评论 -
面试题17.16.按摩师(动态规划法)
题目描述一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。注意:本题相对原题稍作改动示例 1:输入: [1,2,3,1]输出: 4解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。示例 2:输入...原创 2020-03-24 12:39:46 · 376 阅读 · 0 评论 -
143.重排链表
reorder-list题目描述给定一个单链表 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-...原创 2020-03-21 16:26:14 · 171 阅读 · 0 评论 -
119.杨辉三角II
题目描述给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]代码package pid119;import java.util.List;import java.util.ArrayList;public class Solution { public List...原创 2020-03-21 15:19:58 · 165 阅读 · 0 评论 -
102.二叉树的层次遍历
binary-tree-level-order-traversal题目描述给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7],返回其层次遍历结果:[[3],[9,20],[15,7]]代码package pid102;import java.util.List;imp...原创 2020-03-21 12:23:18 · 105 阅读 · 0 评论 -
面试题42:连续子数组的最大和(动态规划法)
lian-xu-zi-shu-zu-de-zui-da-he-lcof题目描述输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。代码public c...原创 2020-03-20 22:25:57 · 188 阅读 · 0 评论 -
105.从前序与中序遍历序列构造二叉树
construct-binary-tree-from-preorder-and-inorder-traversal/submissions题目描述根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:代码/*...原创 2020-03-20 19:54:16 · 73 阅读 · 0 评论 -
99.恢复二叉搜索树
recover-binary-search-tree题目描述二叉搜索树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。示例 1:示例 2:代码package pid99;import java.util.List;import java.util.ArrayList;public class Solution { public void recover...原创 2020-03-17 19:03:12 · 178 阅读 · 0 评论 -
695.岛屿的最大面积
题目描述给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为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,...转载 2020-03-15 23:06:38 · 176 阅读 · 0 评论 -
733. 图像渲染
题目描述有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newColor,让你重新上色这幅图像。为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应四个方向上像...原创 2020-03-15 21:59:01 · 305 阅读 · 0 评论 -
1071.字符串的最大公因子
greatest-common-divisor-of-strings题目描述对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。示例 1:输入:str1 = “ABCABC”, str2 = “ABC”输出:“ABC”示例 2:...原创 2020-03-12 22:22:21 · 86 阅读 · 0 评论 -
706.设计哈希映射
题目描述设计哈希映射不使用任何内建的哈希表库设计一个哈希映射具体地说,你的设计应该包含以下的功能put(key, value):向哈希映射中插入(键,值)的数值对。如果键对应的值已经存在,更新这个值。get(key):返回给定的键所对应的值,如果映射中不包含这个键,返回-1。remove(key):如果映射中存在这个键,删除这个数值对。示例:MyHashMap hashMap =...原创 2020-03-11 23:49:04 · 165 阅读 · 0 评论 -
705.设计哈希集合
design-hashset题目描述不使用任何内建的哈希表库设计一个哈希集合具体地说,你的设计应该包含以下的功能add(value):向哈希集合中插入一个值。contains(value) :返回哈希集合中是否存在这个值。remove(value):将给定值从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。示例:MyHashSet hashSet = new MyHashS...原创 2020-03-02 14:08:40 · 157 阅读 · 0 评论 -
605.贪心法之种花问题
can-place-flowers题目描述假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。示例 1:输入: flowerbed = [...原创 2020-02-07 16:08:17 · 254 阅读 · 0 评论 -
572.另一个树的子树
subtree-of-another-tree题目描述给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:给定的树 s:给定的树 t:返回 true,因为 t 与 s 的一个子树拥有相同的结构和节点值。示例 2:给定的树 s:给定的树 t:...原创 2020-02-03 17:10:52 · 144 阅读 · 0 评论 -
559.N叉树的最大深度
maximum-depth-of-n-ary-tree题目描述给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。例如,给定一个 3叉树 :我们应返回其最大深度,3。说明:树的深度不会超过 1000。树的节点总不会超过 5000。代码/*// Definition for a Node.class Node { publi...原创 2020-02-03 00:05:44 · 128 阅读 · 0 评论 -
538.把二叉搜索树转换为累加树
convert-bst-to-greater-tree题目描述代码public class Solution { private int sum = 0; public TreeNode convertBST(TreeNode root){ if(root!=null){ //下面的遍历过程其实是把此方法返回值当void处理的 convertBST(root.rig...原创 2020-02-01 21:00:58 · 118 阅读 · 0 评论 -
降低寻找某数所有因数的时间复杂度
在leetcode中,不乏一些需要寻找某整型数n的所有因数的题目。若用取余的方法从1到n去遍历查找,时间复杂度是O(n),在面对一些比较大的数字时,会花费非常多的时间。比如寻找n=100的全部因数,使用以下的代码:public List<Integer> findFactors(int n){ List<Integer> factors = new ArrayLi...原创 2020-01-31 15:26:02 · 708 阅读 · 0 评论 -
504.七进制数
base-7题目描述给定一个整数,将其转化为7进制,并以字符串形式输出。示例 1:输入: 100输出: “202”示例 2:输入: -7输出: “-10”注意: 输入范围是 [-1e7, 1e7] 。代码public class Solution { public String convertToBase7(int num){ boolean isNegativ...原创 2020-01-31 01:11:10 · 124 阅读 · 0 评论 -
500.键盘行
keyboard-row题目描述给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。示例:输入: [“Hello”, “Alaska”, “Dad”, “Peace”]输出: [“Alaska”, “Dad”]注意:你可以重复使用键盘上同一字符。你可以假设输入的字符串将只包含字母。代码public class Solution { publi...原创 2020-01-30 23:51:38 · 158 阅读 · 0 评论 -
496.下一个更大元素!
next-greater-element-i题目描述给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出-1。示例 1:输入: nums1 = ...原创 2020-01-30 23:04:00 · 105 阅读 · 0 评论 -
482.密钥格式化
license-key-formatting题目描述给定一个密钥字符串S,只包含字母,数字以及 ‘-’(破折号)。N 个 ‘-’ 将字符串分成了 N+1 组。给定一个数字 K,重新格式化字符串,除了第一个分组以外,每个分组要包含 K 个字符,第一个分组至少要包含 1 个字符。两个分组之间用 ‘-’(破折号)隔开,并且将所有的小写字母转换为大写字母。给定非空字符串 S 和数字 K,按照上面描述...原创 2020-01-30 18:14:44 · 224 阅读 · 0 评论 -
455.分发饼干
assign-cookies题目描述假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。...原创 2020-01-29 19:03:02 · 172 阅读 · 0 评论 -
434.字符串中的单词数
number-of-segments-in-a-string题目描述统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。请注意,你可以假定字符串里不包括任何不可打印的字符。示例:输入: “Hello, my name is John”输出: 5注意点由于有些用例比较bt,类似于:, , , , , , a, abcd所以必须抓住最根本的性质。可...原创 2020-01-29 13:09:33 · 168 阅读 · 0 评论 -
405.数字转换为16进制数
convert-a-number-to-hexadecimal题目描述给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。注意:十六进制中所有字母(a-f)都必须是小写。十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符’0’来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。给定的数确保在32位有符号整数范...原创 2020-01-28 17:14:36 · 265 阅读 · 0 评论 -
404.递归求左叶子之和
题目描述代码public class Solution { public int sumOfLeftLeaves(TreeNode root){ int sum = 0; if(root == null){ return 0;//这个判断非常重要,若缺失将引发空指针异常 } if(root.left!=null && root.left.left==n...原创 2020-01-28 16:32:26 · 95 阅读 · 0 评论 -
392.判断子序列
is-subsequence题目描述给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"...原创 2020-01-28 10:52:58 · 136 阅读 · 0 评论 -
371.java实现二进制加法
sum-of-two-integers题目描述不使用运算符 + 和 - ,计算两整数 a 、b 之和。示例 1:输入: a = 1, b = 2输出: 3示例 2:输入: a = -2, b = 3输出: 1代码public class Solution { public int getSum(int a,int b){ ...原创 2020-01-27 21:47:21 · 279 阅读 · 0 评论 -
350.两个数组的交集II
intersection-of-two-arrays-ii题目描述给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组...转载 2020-01-27 13:38:18 · 120 阅读 · 0 评论 -
345.反转字符串中的元音字母
reverse-vowels-of-a-string题目描述编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入: “hello”输出: “holle”示例 2:输入: “leetcode”输出: “leotcede”代码这道题自认为代码书写比较规范,综合运用了几种简单的数据结构,总结出来供以后参考:public class Solution {...原创 2020-01-26 23:33:50 · 124 阅读 · 0 评论 -
283.移动零
move-zeroes题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。来自网友的题解public class Solution { public void moveZeroes(int[...原创 2020-01-26 18:22:49 · 313 阅读 · 1 评论 -
257.递归输出二叉树的所有路径
binary-tree-paths题目描述代码public class Solution { public List<String> binaryTreePaths(TreeNode root){ String path = new String(); List<String> paths = new ArrayList<>(); cons...原创 2020-01-26 15:14:12 · 693 阅读 · 0 评论 -
237.删除链表中的当前结点(一个参数)
delete-node-in-a-linked-list题目描述请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:4->5->1->9示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的...原创 2020-01-26 12:59:30 · 217 阅读 · 0 评论 -
226.翻转二叉树
题目描述据说Homebrew之父Max Howell由于没做出来这题面试谷歌被拒,那么看来能做出来就是算法大牛咯~代码class Solution { public TreeNode invertTree(TreeNode root){ //终止条件:反转一颗空树,其结果还是一颗空树 if(root == null){ return null; } TreeN...原创 2020-01-24 01:08:07 · 125 阅读 · 0 评论 -
225.用两个队列实现栈
implement-stack-using-queues题目描述使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。你...原创 2020-01-23 23:50:11 · 125 阅读 · 0 评论 -
219.滑动窗口方法解决固定区域内存在重复元素的问题
contains-duplicate-ii题目描述给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。示例 1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true...原创 2020-01-23 14:31:43 · 393 阅读 · 0 评论