
leetcode高频打卡
BJFU_vth
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
680:验证回文字符串II
问题描述给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例输入: "aba"输出: True输入: "abca"输出: True解释: 你可以删除c字符。注意:字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。思路判断这个字符串是不是回文,如果从某个字符起不是回文,就删掉它判断剩下的。如果剩下的是回文,则这个串是回文,否则不是。某个字符起不是回文,必然两个字母值不相同,删除哪个? 两种情况都要判断一下的。方法一class Solution原创 2020-05-20 11:19:28 · 206 阅读 · 0 评论 -
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-05-19 16:29:57 · 131 阅读 · 0 评论 -
560:和为K的子数组
问题描述给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明:数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。思路这题的复杂性在于我们不确定定住哪边动哪边。 对于每一个结点,我们都要遍历它左边的所有结点,并计算值。这样复杂度直接到了O(n3)。 offer已原创 2020-05-19 14:47:53 · 228 阅读 · 0 评论 -
136:只出现一次的数字
问题描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例输入: [2,2,1]输出: 1输入: [4,1,2,1,2]输出: 4思路全体异或即可。方法一class Solution { public int singleNumber(int[] nums) { int target = nums[0]; for(i原创 2020-05-19 13:10:12 · 146 阅读 · 0 评论 -
102:二叉树的层序遍历
问题描述给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例二叉树:[3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]思路DFS和BFS都可以做到。 但是BFS为佳。这题就是为BFS...原创 2020-04-07 15:31:19 · 122 阅读 · 0 评论 -
155:最小栈
问题描述设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例输入:["MinStack","push","push","push","getMin","pop","top","getMin"][[],[-2],[0],[-3],[],[],[],[]]输出:[null,null,null,nul原创 2020-05-12 15:18:45 · 184 阅读 · 0 评论 -
50:pow(x,n)
问题描述:实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例:输入: 2.00000, 10输出: 1024.00000输入: 2.10000, 3输出: 9.26100输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x < 100.0n 是 32 位有符号整数...原创 2019-12-12 20:15:56 · 271 阅读 · 0 评论 -
69:x的平方根
问题描述实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例输入: 4输出: 2输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。思路这题首先就想到了二分来找。这题跟之前二分来找插入位置的题目简直如出一...原创 2020-03-03 21:11:05 · 140 阅读 · 1 评论 -
138:复制带随机指针的链表
问题描述给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的 深拷贝。我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:val:一个表示 Node.val 的整数。random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则...原创 2020-05-08 13:33:48 · 152 阅读 · 0 评论 -
221: 最大正方形
问题描述在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4思路暴力法。 如果某点是1,就把它当做是结果正方形的左上角,不断的探索其边界。这样时间复杂度有点高,但是结果却不错,beat 98%。(方法一)动态规划法。 我们先考虑一个很小的场景。比...原创 2020-05-08 10:53:09 · 204 阅读 · 0 评论 -
983:最低票价
问题描述在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为 costs[0] 美元;一张为期七天的通行证售价为 costs[1] 美元;一张为期三十天的通行证售价为 costs[2] 美元。通行证允许数天无限制的...原创 2020-05-07 23:08:10 · 165 阅读 · 0 评论 -
572:另一个树的子树
问题描述给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例给定的树 s: 3 / \ 4 5 / \ 1 2给定的树 t: 4 / \ 1 2返回 true,因为 t 与 s 的一个子树拥有相同的结构...原创 2020-05-07 11:36:15 · 197 阅读 · 0 评论 -
98:验证二叉搜索树
问题描述给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例输入: 2 / \ 1 3输出: true输入: 5 / \ 1 4 / \ 3 6输出: fals...原创 2020-04-05 08:58:41 · 128 阅读 · 0 评论 -
45:跳跃游戏II
问题描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。说明:假设你总是可以到达数组的最...原创 2020-05-04 20:28:02 · 181 阅读 · 0 评论 -
53:最大子序和
问题描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。思路这题我首先就想到了在线处理算法(Kadane)。对于某个...原创 2020-03-03 00:03:42 · 151 阅读 · 0 评论 -
3:无重复字符的最长子串
问题描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3...原创 2020-05-02 13:24:21 · 133 阅读 · 0 评论 -
21:合并两个有序链表
问题描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例输入:1->2->4, 1->3->4输出:1->1->2->3->4->4图解思路经典的数据结构问题。如果想省一个结点,就先判断出l1和l2哪个小,让head指向小的。(方法一)如果想程序写的简洁一点,那么就弄出来一个头...原创 2020-02-29 10:08:01 · 193 阅读 · 0 评论 -
1095:山脉数组中查找目标值
问题描述(这是一个 交互式问题 )给你一个 山脉数组 mountainArr,请你返回能够使得 mountainArr.get(index) 等于 target 最小 的下标 index 值。如果不存在这样的下标 index,就请返回 -1。何为山脉数组?如果数组 A 是一个山脉数组的话,那它满足如下条件:首先,A.length >= 3其次,在 0 < i < A....原创 2020-04-30 10:54:23 · 212 阅读 · 0 评论 -
202:快乐数
问题描述编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例输入: 19输出: true解释: 12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 0...原创 2020-03-11 12:00:24 · 153 阅读 · 0 评论 -
1608:面试题56 - I. 数组中数字出现的次数
问题描述一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]限制:2 <= nums <= 10000...原创 2020-04-28 10:01:46 · 174 阅读 · 0 评论 -
33:搜索旋转排序数组
问题描述:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。实例:输入: nums = [4,5,6,7,0,1,2], ...原创 2019-12-06 17:49:01 · 192 阅读 · 0 评论 -
23:合并K个排序链表
问题描述合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6思路把所有元素一股脑的加入优先队列,然后再输出出来即可。不过这样可能会导致没有断链,成环。 所以我们每加入一...原创 2020-04-27 10:13:57 · 174 阅读 · 0 评论 -
46:全排列
问题描述:给定一个没有重复数字的序列,返回其所有可能的全排列。示例输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]思路:循环DFS就可以了。注意不能用已经用过的元素。AC代码:class Solution: def permute(self, nums): res ...原创 2019-12-07 16:29:09 · 173 阅读 · 0 评论 -
1591:面试题51. 数组中的逆序对
问题描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000思路这两天太忙了没时间看。暴力法倒是很容易就写出来。但是这个问题规模用暴力是不行的。O(n2),25万的规模,倒也还凑合,不过在面试中暴力可能就拿个基本分...原创 2020-04-24 23:11:30 · 282 阅读 · 0 评论 -
1481:面试题 08.11. 硬币
问题描述硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)示例 输入: n = 5 输出:2 解释: 有两种方式可以凑成总金额:5=55=1+1+1+1+1 输入: n = 10 输出:4 解释: 有四种方式可以凑成总金额:10=1010=5+510=5+1+1+1+1+1...原创 2020-04-23 11:45:44 · 190 阅读 · 0 评论 -
199:二叉树的右视图
问题描述给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <---思路跟二叉树的左视图那...原创 2020-04-22 10:28:51 · 152 阅读 · 0 评论 -
1248:统计「优美子数组」
问题描述给你一个整数数组 nums 和一个整数 k。如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。请返回这个数组中「优美子数组」的数目。示例输入:nums = [1,1,2,1,1], k = 3输出:2解释:包含 3 个奇数的子数组是 [1,1,2,1] 和 [1,2,1,1] 。输入:nums = [2,4,6], k = 1输出:0...原创 2020-04-21 11:12:55 · 229 阅读 · 0 评论 -
200:岛屿数量
问题描述给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例输入:11110110101100000000输出: 1输入:11000110000010000011输出: 3解释: 每座岛屿只能由水平和/或...原创 2020-04-20 10:35:26 · 223 阅读 · 0 评论 -
466:统计重复个数
问题描述由 n 个连接的字符串 s 组成字符串 S,记作 S = [s,n]。例如,[“abc”,3]=“abcabcabc”。如果我们可以从 s2 中删除某些字符使其变为 s1,则称字符串 s1 可以从字符串 s2 获得。例如,根据定义,“abc” 可以从 “abdbec” 获得,但不能从 “acbbe” 获得。现在给你两个非空字符串 s1 和 s2(每个最多 100 个字符长)和两个整数...原创 2020-04-19 12:41:22 · 273 阅读 · 0 评论 -
11:盛水最多的容器
问题描述给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(...原创 2020-04-18 09:54:31 · 141 阅读 · 0 评论 -
55:跳跃游戏
问题描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为...原创 2019-12-13 11:20:36 · 193 阅读 · 0 评论 -
56:合并区间
问题描述给出一个区间的集合,请合并所有重叠的区间。样例输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。问题分析一个朴...原创 2019-12-12 20:56:14 · 128 阅读 · 0 评论 -
542:01矩阵
问题描述给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。输入:0 0 00 1 00 0 0输出:0 0 00 1 00 0 0输入:0 0 00 1 01 1 1输出:0 0 00 1 01 2 1注意:给定矩阵的元素个数不超过 10000。给定矩阵中至少有一个元素是 0。矩阵中的元素只在四...原创 2020-04-15 22:25:05 · 255 阅读 · 0 评论 -
445:两数相加II
问题描述这个是字节跳动面试题。给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例输入:(7 -> 2 -> 4 -> 3) + (5 -> ...原创 2020-04-14 13:54:56 · 142 阅读 · 0 评论 -
887:鸡蛋掉落
问题描述你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 <=...原创 2020-04-13 23:52:33 · 176 阅读 · 0 评论 -
355:设计推特
问题描述设计一个简化版的推特(Twitter),可以让用户实现发送推文,关注/取消关注其他用户,能够看见关注人(包括自己)的最近十条推文。你的设计需要支持以下的几个功能:postTweet(userId, tweetId): 创建一条新的推文getNewsFeed(userId):检索最近的十条推文。每个推文都必须是由此用户关注的人或者是用户自己发出的。推文必须按照时间顺序由最近的开始排...原创 2020-04-13 12:03:45 · 293 阅读 · 0 评论 -
151:翻转字符串里的单词
问题描述给定一个字符串,逐个翻转字符串中的每个单词。示例输入: "the sky is blue"输出: "blue is sky the"输入: " hello world! "输出: "world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。输入: "a good example"输出: "example good...原创 2020-04-05 23:27:53 · 191 阅读 · 0 评论 -
22:括号生成
问题描述数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]思路典型的DFS问题。不过比别的DFS要简单一点。结果集是String的,...原创 2020-04-09 11:42:03 · 111 阅读 · 0 评论 -
1531:面试题13. 机器人的运动范围
问题描述地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能...原创 2020-04-08 15:38:11 · 135 阅读 · 0 评论 -
1418:面试题01.07. 旋转矩阵
这道题跟leetcode48是一样的。问题描述给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?示例给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]...原创 2020-04-07 14:19:07 · 184 阅读 · 0 评论