leetcode中等题
BJFU_vth
这个作者很懒,什么都没留下…
展开
-
120: 三角形的最小路径和
问题描述给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。例如:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。思路用动态规划的思路解决即可原创 2020-09-24 13:25:16 · 115 阅读 · 0 评论 -
5:最长回文子串
问题描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。输入: “cbbd”输出: “bb”思路这题一个显而易见的思路就是取出所有的子串,然后去判定它是不是个回文串。但是这样时间复杂度太高了。(方法一)还有就是可以认定一个字符/二个字符是回文串的中心,向两边扩展。这样可以被动剪枝。 (方法二)还有就是动态规划了。(方法三)方法一并不能AC,所以我们就不写了。我们只原创 2020-08-11 14:42:54 · 122 阅读 · 0 评论 -
547:朋友圈
问题描述示例输入: [[1,1,0], [1,1,0], [0,0,1]]输出: 2 说明:已知学生0和学生1互为朋友,他们在一个朋友圈。第2个学生自己在一个朋友圈。所以返回2。输入: [[1,1,0], [1,1,1], [0,1,1]]输出: 1说明:已知学生0和学生1互为朋友,学生1和学生2互为朋友,所以学生0和学生2也是朋友,所以他们三个在一个朋友圈,返回1。思路这是个连通问题。所以用DFS、BFS、并查集等常见的图算法都可以做。方法一DFSclass原创 2020-07-30 16:19:05 · 199 阅读 · 0 评论 -
144. 二叉树的先序遍历
问题描述给定一个二叉树,返回它的 前序 遍历。示例输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]思路递归算法太无脑了,说下非递归吧。先序遍历是中左右。算法的思想是,每一个非空结点都要进栈,进栈之后就要出栈。(根) 然后如果有右子树,就右子树进栈。因为是中左右,想要先访问左,就要先把右孩子进栈,先进栈的后访问嘛。然后再把左孩子进栈。当栈为空时返回。方法一class Solution { public Lis原创 2020-06-26 19:44:23 · 233 阅读 · 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 · 206 阅读 · 0 评论 -
1607: 字符串排列
问题描述输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"]思路这题用DFS的visited也可以,用DFS的交换原理也可以。 (弄个循环,循环到哪里,就把它与其他的字符交换) 即, 第一个字符可以跟所有的字符交换,包括他自己。 第二个字符可以跟第2到最后一个字符交换。。。。。以此类推。(方法一)当然啦,也可以不交换,直接采原创 2020-05-12 14:37:24 · 102 阅读 · 0 评论 -
1601:面试题36. 二叉搜索树与双向链表
问题描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。下图展示了上面的二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。特别地,我们希望可以就地完成转换操作。当转化完成以后,树中节点的左指针需原创 2020-05-09 15:37:06 · 141 阅读 · 0 评论 -
138:复制带随机指针的链表
问题描述给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的 深拷贝。我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:val:一个表示 Node.val 的整数。random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则...原创 2020-05-08 13:33:48 · 120 阅读 · 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 · 180 阅读 · 0 评论 -
983:最低票价
问题描述在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为 costs[0] 美元;一张为期七天的通行证售价为 costs[1] 美元;一张为期三十天的通行证售价为 costs[2] 美元。通行证允许数天无限制的...原创 2020-05-07 23:08:10 · 138 阅读 · 0 评论 -
1597:面试题33. 二叉搜索树的后序遍历序列
问题描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树: 5 / \ 2 6 / \ 1 3示例输入: [1,6,3,2,5]输出: false输入: [1,3,2,6,5]输出: true提示:数组长度 <...原创 2020-05-06 20:56:14 · 156 阅读 · 0 评论 -
3:无重复字符的最长子串
问题描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3...原创 2020-05-02 13:24:21 · 103 阅读 · 0 评论 -
1574:面试题26 树的子结构
问题描述输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A: 3 / \ 4 5 / \ 1 2给定的树 B: 4 / 1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例输入:A = [1,2,3],...原创 2020-05-01 10:40:23 · 190 阅读 · 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 · 132 阅读 · 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 · 161 阅读 · 0 评论 -
199:二叉树的右视图
问题描述给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <---思路跟二叉树的左视图那...原创 2020-04-22 10:28:51 · 118 阅读 · 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 · 195 阅读 · 0 评论 -
153:寻找旋转排序数组中的最小值
问题描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例输入: [3,4,5,1,2]输出: 1输入: [4,5,6,7,0,1,2]输出: 0思路参考本人的另一篇文章吧。这个题目比那个还简单。是剑指offer的第6...原创 2020-04-20 16:38:33 · 110 阅读 · 0 评论 -
200:岛屿数量
问题描述给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例输入:11110110101100000000输出: 1输入:11000110000010000011输出: 3解释: 每座岛屿只能由水平和/或...原创 2020-04-20 10:35:26 · 186 阅读 · 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 · 109 阅读 · 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 · 223 阅读 · 0 评论 -
445:两数相加II
问题描述这个是字节跳动面试题。给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例输入:(7 -> 2 -> 4 -> 3) + (5 -> ...原创 2020-04-14 13:54:56 · 114 阅读 · 0 评论 -
355:设计推特
问题描述设计一个简化版的推特(Twitter),可以让用户实现发送推文,关注/取消关注其他用户,能够看见关注人(包括自己)的最近十条推文。你的设计需要支持以下的几个功能:postTweet(userId, tweetId): 创建一条新的推文getNewsFeed(userId):检索最近的十条推文。每个推文都必须是由此用户关注的人或者是用户自己发出的。推文必须按照时间顺序由最近的开始排...原创 2020-04-13 12:03:45 · 248 阅读 · 0 评论 -
116:填充每个节点的下一个右侧节点指针
问题描述给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val; Node *left; Node *right; Node *next;}示例输入:{"$id":"1","left":{"$id":"2","left":{"$id":"3","left":null,"next":null,"...原创 2020-04-10 21:38:27 · 97 阅读 · 1 评论 -
114:二叉树展开为链表
问题描述给定一个二叉树,原地将它展开为链表。例如,给定二叉树 1 / \ 2 5 / \ \3 4 6将其展开为:1 \ 2 \ 3 \ 4 \ 5 \ 6思路我们发现,如果从最底层的结点开始,都把它的右孩子插入在左孩子的最后一个结点处...原创 2020-04-10 19:03:37 · 121 阅读 · 0 评论 -
113:路径总和II
问题描述给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ ...原创 2020-04-10 11:16:04 · 97 阅读 · 0 评论 -
109:有序链表转换二叉搜索树
问题描述给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 ...原创 2020-04-09 18:58:15 · 91 阅读 · 0 评论 -
106:从中序与后续遍历序列构造二叉树
问题描述根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7思路后序遍历的结构是:左、右、中。中序遍历的结构是:左、中、右。...原创 2020-04-09 12:14:40 · 101 阅读 · 0 评论 -
22:括号生成
问题描述数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]思路典型的DFS问题。不过比别的DFS要简单一点。结果集是String的,...原创 2020-04-09 11:42:03 · 88 阅读 · 0 评论 -
105:从前序与中序遍历序列构造二叉树
问题描述根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7思路前序与中序遍历的序列有一个特点:对于某棵树来讲,先序遍历的序列的...原创 2020-04-09 11:04:35 · 112 阅读 · 0 评论 -
103:二叉树的锯齿形层次遍历
问题描述给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[ [3], [20,9], [15,7]]思路层序遍历还是那个层序遍历...原创 2020-04-08 23:14:25 · 180 阅读 · 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 · 106 阅读 · 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 · 104 阅读 · 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 · 159 阅读 · 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 · 161 阅读 · 0 评论 -
146:LRU缓存机制
问题描述运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最久...原创 2020-04-05 13:44:21 · 83 阅读 · 0 评论 -
98:验证二叉搜索树
问题描述给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例输入: 2 / \ 1 3输出: true输入: 5 / \ 1 4 / \ 3 6输出: fals...原创 2020-04-05 08:58:41 · 99 阅读 · 0 评论 -
96:不同的二叉搜索树
问题描述给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 ...原创 2020-04-04 11:23:58 · 171 阅读 · 0 评论 -
95:不同的二叉搜索树II
问题描述给定一个整数 n,生成所有由 1 … n 为节点所组成的二叉搜索树。示例输入: 3输出:[ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树: 1 3 3 2 ...原创 2020-04-03 22:28:55 · 97 阅读 · 0 评论 -
8:字符串转换整数
问题描述请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会...原创 2020-04-03 13:40:24 · 152 阅读 · 0 评论
分享