字节LeetCode专场
Elon0
这个作者很懒,什么都没留下…
展开
-
【字节专题】leetcode 69. x 的平方根
69. x 的平方根实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。class Solution { ...原创 2019-10-26 14:41:01 · 121 阅读 · 0 评论 -
【字节专题】leetcode 176. 第二高的薪水
176. 第二高的薪水编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。+----+--------+| Id | Salary |+----+--------+| 1 | 100 || 2 | 200 || 3 | 300 |+----+--------+例如上述 Employee 表,SQL查询应该返回 200 作为...原创 2019-10-20 00:16:55 · 120 阅读 · 0 评论 -
【字节专题】leetcode 146. LRU缓存机制
146. LRU缓存机制运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新...原创 2019-10-20 00:08:15 · 233 阅读 · 0 评论 -
【字节专题】leetcode 155. 最小栈
155. 最小栈设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) -- 将元素 x 推入栈中。pop() -- 删除栈顶的元素。top() -- 获取栈顶元素。getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStac...原创 2019-10-19 23:53:58 · 113 阅读 · 0 评论 -
【字节专题】leetcode 23. 合并K个排序链表
23. 合并K个排序链表合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6分而治之最快的做法//分治public ListNode mergeKLists(L...原创 2019-10-06 16:16:54 · 106 阅读 · 0 评论 -
【字节专题】leetcode 160. 相交链表
160. 相交链表编写一个程序,找到两个单链表相交的起始节点。快速做法消除长度差: 拼接两链表。public ListNode getIntersectionNode(ListNode headA, ListNode headB) { if (headA == null || headB == null) return null; ListNode pA = headA,...原创 2019-10-06 13:34:58 · 87 阅读 · 0 评论 -
【字节专场】leetcode 142. 环形链表 II
142. 环形链表 II给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to ...原创 2019-10-06 12:58:54 · 112 阅读 · 0 评论 -
【字节专题】leetcode 148. 排序链表
148. 排序链表在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5自底向上归并排序重点在于分别以1,2,4,8…的步长...原创 2019-10-05 17:21:16 · 108 阅读 · 0 评论 -
【字节专题】leetcode 2. 两数相加
2. 两数相加给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -&g...原创 2019-10-05 15:44:33 · 131 阅读 · 0 评论 -
【字节专题】leetcode 236. 二叉树的最近公共祖先
236. 二叉树的最近公共祖先给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:...原创 2019-10-06 17:10:03 · 109 阅读 · 0 评论 -
【字节专题】leetcode 103. 二叉树的锯齿形层次遍历
103. 二叉树的锯齿形层次遍历给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[ [3], [20,9], [15,7]]...原创 2019-10-06 17:18:33 · 117 阅读 · 0 评论 -
【字节专场】leetcode 121. 买卖股票的最佳时机
121. 买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6...原创 2019-10-07 17:29:33 · 106 阅读 · 0 评论 -
【字节专题】leetcode 122. 买卖股票的最佳时机 II
122. 买卖股票的最佳时机 II给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股...原创 2019-10-08 00:18:00 · 126 阅读 · 0 评论 -
【字节专题】leetcode 221. 最大正方形
221. 最大正方形在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4不需要额外空间 直接原地dp写得有点丑,没有大佬们的好看。第一个for遍历1~max_edge,也就是最长的边。第二三个for,判断matrix[i][j]=='1' &...原创 2019-10-08 01:22:06 · 231 阅读 · 0 评论 -
【字节专题】leetcode 53. 最大子序和
53. 最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。public int maxSubArray(i...原创 2019-10-08 01:33:18 · 94 阅读 · 0 评论 -
【字节专题】leetcode 120. 三角形最小路径和
120. 三角形最小路径和给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你...原创 2019-10-08 01:45:34 · 126 阅读 · 0 评论 -
【字节专题】leetcode 354. 俄罗斯套娃信封问题
354. 俄罗斯套娃信封问题给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算最多能有多少个信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。说明:不允许旋转信封。示例:输入: envelopes = [[5,4],[6,4],[...原创 2019-10-08 02:51:18 · 187 阅读 · 0 评论 -
【字节专题】leetcode 92. 反转链表 II
92. 反转链表 II反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL递归// 返回值为新链表的头节点public ListNode reve...原创 2019-10-05 15:35:05 · 127 阅读 · 0 评论 -
【字节专题】leetcode 21. 合并两个有序链表
21. 合并两个有序链表将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4递归public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ...原创 2019-10-05 14:08:49 · 105 阅读 · 0 评论 -
【字节专场】leetcode3. 无重复字符的最长子串
3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为...原创 2019-10-02 20:58:58 · 136 阅读 · 0 评论 -
【字节专场】leetcode14. 最长公共前缀
14. 最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。最初的想法就是对于每个字符串...原创 2019-10-02 22:10:00 · 106 阅读 · 0 评论 -
【字节专场】leetcode567. 字符串的排列
567. 字符串的排列给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。示例1:输入: s1 = "ab" s2 = "eidbaooo"输出: True解释: s2 包含 s1 的排列之一 ("ba"). 示例2:输入: s1= "ab" s2 = "eidboaoo"输出: Fal...原创 2019-10-02 22:42:45 · 142 阅读 · 0 评论 -
【字节专场】leetcode 43. 字符串相乘
43. 字符串相乘给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例 2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1 和 num2 的长度小于110。num1 ...原创 2019-10-02 23:43:52 · 113 阅读 · 0 评论 -
【字节专场】leetcode 151. 翻转字符串里的单词
151. 翻转字符串里的单词给定一个字符串,逐个翻转字符串中的每个单词。 示例 1:输入: "the sky is blue"输出: "blue is sky the"示例 2:输入: " hello world! "输出: "world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: "a good ...原创 2019-10-03 00:19:56 · 208 阅读 · 0 评论 -
【字节专场】leetcode 71. 简化路径
71. 简化路径以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个...原创 2019-10-03 00:42:28 · 173 阅读 · 0 评论 -
【字节专场】leetcode 93. 复原IP地址
93. 复原IP地址给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。示例:输入: "25525511135"输出: ["255.255.11.135", "255.255.111.35"]我们要知道IP的格式,每位是在0~255之间,注意: 不能出现以0开头的两位以上数字,比如012,08…回溯法public List<String> resto...原创 2019-10-03 01:12:41 · 122 阅读 · 0 评论 -
【字节专场】leetcode 695. 岛屿的最大面积(DFS)
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,...原创 2019-10-04 10:16:16 · 246 阅读 · 0 评论 -
【字节专场】leetcode 33. 搜索旋转排序数组
33. 搜索旋转排序数组假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,...原创 2019-10-04 13:06:36 · 92 阅读 · 0 评论 -
【字节专题】leetcode 674. 最长连续递增序列
674. 最长连续递增序列给定一个未经排序的整数数组,找到最长且连续的的递增序列。示例 1:输入: [1,3,5,4,7]输出: 3解释: 最长连续递增序列是 [1,3,5], 长度为3。尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。 示例 2:输入: [2,2,2,2,2]输出: 1解释: 最长连续递增序列是 [2], 长度为...原创 2019-10-04 15:24:15 · 103 阅读 · 0 评论 -
【字节专题】leetcode 215. 数组中的第K个最大元素
215. 数组中的第K个最大元素在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。...原创 2019-10-04 16:36:42 · 105 阅读 · 0 评论 -
【字节专场】leetcode 128. 最长连续序列
128. 最长连续序列给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。题目看着很简单,但要求O(n)时间复杂度,这就得好好想想,因为相当于只能遍历一遍数组,可以想想什么数据结构可以帮到我们,基本威力巨大的数据结构...原创 2019-10-04 17:05:10 · 135 阅读 · 0 评论 -
【字节专题】leetcode 60. 第k个排列
60. 第k个排列给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:"123""132""213""231""312""321"给定 n 和 k,返回第 k 个排列。说明:给定 n 的范围是 [1, 9]。给定 k 的范围是[1, n!]。示例 1:输入: n = 3, ...原创 2019-10-04 18:31:07 · 146 阅读 · 0 评论 -
【字节专题】leetcode 547. 朋友圈
547. 朋友圈班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的...原创 2019-10-04 18:42:00 · 90 阅读 · 0 评论 -
【字节专题】leetcode 56. 合并区间
56. 合并区间给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重...原创 2019-10-04 20:59:35 · 96 阅读 · 0 评论 -
【字节专题】leetcode 42. 接雨水
42. 接雨水给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6逻辑:当前高度小于...原创 2019-10-04 22:09:40 · 213 阅读 · 0 评论 -
【字节专场】leetcode15. 三数之和
15. 三数之和给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]暴力...原创 2019-09-30 03:41:03 · 178 阅读 · 0 评论