每日一题
华山栈道
码出机会
展开
-
每日一题:插入区间(困难??? 中等)
57. 插入区间1.题目来源题目链接:插入区间题目来源: LeetCode2.题目描述给出一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。示例 1:输入:intervals = [[1,3],[6,9]], newInterval = [2,5]输出:[[1,5],[6,9]]示例 2:输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]],原创 2020-11-04 19:53:16 · 234 阅读 · 0 评论 -
每日一题:有效的山脉数组(简单)
941. 有效的山脉数组1. 题目来源:链接:有效的山脉数组来源:LeetCode2.题目说明:给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:A.length >= 3在 0 < i < A.length - 1 条件下,存在 i 使得:A[0] < A[1] < … A[i-1] < A[i]A[i] > A[i+1] > … >原创 2020-11-03 10:39:53 · 368 阅读 · 1 评论 -
每日一题:两个数组的交集(简单)
文章目录349. 两个数组的交集1.题目来源:2.题目说明:3.思路:3.1 直接判断3.2先排序然后二分法查找4.上代码:4.1 直接判断:4.2先排序然后二分法查找55.15.2349. 两个数组的交集1.题目来源:1 两个数组的交集2.leetCode2.题目说明:给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,原创 2020-11-02 17:35:04 · 704 阅读 · 1 评论 -
每日一题:岛屿的周长(简单)
463. 岛屿的周长1. 题目来源:链接:求根到叶子节点数字之和来源:LeetCode2.题目说明:给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域。网格中的格子水平和垂直方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100 。计算这个岛屿的周长。示例 :输原创 2020-10-30 11:18:03 · 613 阅读 · 0 评论 -
每日一题:求根到叶子节点数字之和(中等)
129. 求根到叶子节点数字之和1. 题目来源:链接:求根到叶子节点数字之和来源:LeetCode2.题目说明:给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 25解释:从根到叶子节点路径 1->2 代原创 2020-10-29 15:07:19 · 356 阅读 · 0 评论 -
每日一题:独一无二的出现次数(简单)
1207. 独一无二的出现次数1. 题目来源链接:独一无二的出现次数来源:LeetCode2.题目说明给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。示例 1:输入:arr = [1,2,2,1,1,3]输出:true解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。示例 2:输入:arr = [1,2]输出:false示例 3:原创 2020-10-28 19:52:32 · 339 阅读 · 0 评论 -
每日一题:二叉树的前序遍历(简单)
144. 二叉树的前序遍历1. 题目来源链接: 二叉树的前序遍历来源:LeetCode2.题目说明给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?3.思路:按照定义,我们只要首先将 root 节点的值加入答案,然后递归调用 preorder(root.left) 来遍历 root 节点的左子树,最后递归调用 preord原创 2020-10-27 10:20:32 · 463 阅读 · 0 评论 -
每日一题:有多少小于当前数字的数字(简单)
1365. 有多少小于当前数字的数字1. 题目来源链接:回文列表来源:LeetCode2.题目说明给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。以数组形式返回答案。示例 1:输入:nums = [8,1,2,2,3]输出:[4,0,1,1,3]解释: 对于 nums[0]=8 存在四个比它小原创 2020-10-26 17:03:23 · 504 阅读 · 1 评论 -
每日一题:回文链表(简单)
234. 回文链表1. 题目来源链接:回文列表来源:LeetCode2.题目说明请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶: 你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?3.思路:复制链表值到数组列表中。使用双指针法判断是否为回文。4.上代码/** * Definition for singly-linked list. * p原创 2020-10-23 20:42:09 · 320 阅读 · 0 评论 -
每日一题:长按键入(简单???)
925. 长按键入题目位置你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。示例 1:输入:name = “alex”, typed = “aaleex”输出:true解释:‘alex’ 中的 ‘a’ 和 ‘e’ 被长按。示例 2:输入:name = “saeed”, typed = “ssaae原创 2020-10-21 09:39:26 · 318 阅读 · 0 评论 -
每日一题:重排链表(中等)
143. 重排链表给定一个单链表 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->4->5, 重新排列为 1->5->2->4->3.思路:1.1 快慢指针主原创 2020-10-20 19:14:38 · 399 阅读 · 0 评论 -
每日一题:删除链表的倒数第N个节点(中等)
19. 删除链表的倒数第N个节点给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?思路:整体思路是让前面的指针先移动n步,之后前后指针共同移动直到前面的指针到尾部为止首先设立预先指针 pre,预先指针是一个小技巧,在第2题中进行了讲解原创 2020-10-18 22:41:45 · 276 阅读 · 0 评论 -
每日一题:N皇后 II(困难)
52. N皇后 IIn 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回 n 皇后不同的解决方案的数量。示例:输入: 4输出: 2解释: 4 皇后问题存在如下两个不同的解法。[ [".Q..", // 解法 1 "...Q", "Q...", "..Q."], ["..Q.", // 解法 2 "Q...", "...Q", ".Q.."]] 提示:原创 2020-10-17 10:37:54 · 383 阅读 · 0 评论 -
每日一题:填充每个节点的下一个右侧节点指针(中等)
116. 填充每个节点的下一个右侧节点指针给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。示例:输入:{“KaTeX parse error: Expec原创 2020-10-15 20:55:01 · 263 阅读 · 0 评论 -
每日一题:查找常用字符(简单)
1002. 查找常用字符给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。你可以按任意顺序返回答案。示例 1:输入:[“bella”,“label”,“roller”]输出:[“e”,“l”,“l”]示例 2:输入:[“cool”,“lock”,“cook”]输出:[“c”,“o”]解题思路:利用两个哈希表,每个哈希表都是长度为原创 2020-10-14 09:55:58 · 421 阅读 · 0 评论 -
每日一题: 二叉搜索树的最小绝对差(简单)
530. 二叉搜索树的最小绝对差给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。示例:输入: 1 \ 3 / 2输出:1解释:最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。提示:树中至少有 2 个节点。本题与 783 题相同https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/思路:众所原创 2020-10-12 10:35:22 · 313 阅读 · 0 评论 -
每日一题:环形链表(简单)
141. 环形链表给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?**思路:**最简单的一种方式就是快慢原创 2020-10-09 19:30:41 · 266 阅读 · 0 评论 -
每日一题:反转字符串(简单)
344. 反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“原创 2020-10-08 09:26:58 · 317 阅读 · 0 评论 -
每日一题:颜色分类(中等)
75. 颜色分类给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当前数组。你能想出一个仅使原创 2020-10-07 16:47:00 · 386 阅读 · 0 评论 -
每日一题:四数之和(中等)
18. 四数之和给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[[-1, 0, 0, 1],[-2, -1, 1, 2],[-2, 0,原创 2020-10-05 11:48:48 · 361 阅读 · 0 评论 -
每日一题: 数组中重复的数字(简单)
剑指 Offer 03. 数组中重复的数字找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 限制:2 <= n <= 100000思路:最简单的方式就是把数组中的元素一个个加入到集合set中,加入的时候如果有重复的,则直接返回上代码:原创 2020-09-29 20:48:03 · 554 阅读 · 0 评论 -
每日一题: 填充每个节点的下一个右侧节点指针 II(中等)
117. 填充每个节点的下一个右侧节点指针 II给定一个二叉树struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。进阶:你只能使用常量级额外空间。使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度原创 2020-09-28 20:50:08 · 350 阅读 · 0 评论 -
每日一题: 从中序与后序遍历序列构造二叉树(中等)
106. 从中序与后序遍历序列构造二叉树根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7思路:上代码:/** * Definition for a binary tree node. * public class TreeN原创 2020-09-25 19:05:26 · 337 阅读 · 0 评论 -
每日一题:电话号码的字母组合(中等)
17. 电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].思路:创建一个链表result,如果digits的长度为0直接返回该链表创建一个map,把每个数字对应的字符串写入map开始遍历,以“23”为例定义current = 2所对应的字符串也原创 2020-09-23 20:27:15 · 290 阅读 · 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]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例:输入:[1,8,6,2,5,4,8,3,7]输出:原创 2020-09-23 19:26:19 · 318 阅读 · 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]]思路:1 首先进行数组排序,时间复杂度 O(nlogn)2 在数组 nums 中,进行遍历,每遍历一个值利用原创 2020-09-22 20:46:28 · 339 阅读 · 0 评论 -
每日一题:最接近的三数之和(中等)
16. 最接近的三数之和给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是2 (-1 + 2 +1 = 2) 。提示: 3 <= nums.length <= 10^3-10^3 <= nums[i] <= 10^原创 2020-09-21 20:43:44 · 357 阅读 · 0 评论 -
每日一题:左叶子之和(简单)
404. 左叶子之和计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode原创 2020-09-19 20:42:43 · 340 阅读 · 0 评论 -
每日一题:括号生成(中等)
22. 括号生成数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]思路:1 当前左右括号都有大于 0个可以使用的时候,才产生分支;2 产生左分支的时候,只看当前是否还有左括号可以使用;3 产生右分支的时候,还受到左分支的限制,右边剩余可以使用的括号数量一定得在严格大于左边剩余的数量的时候,才可以产生分支原创 2020-09-18 20:57:58 · 306 阅读 · 0 评论 -
每日一题: 整数转罗马数字(中等)
12. 整数转罗马数字罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II原创 2020-09-17 20:47:05 · 300 阅读 · 0 评论 -
每日一题:Z 字形变换(中等)
6. Z 字形变换将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int原创 2020-09-16 17:38:55 · 344 阅读 · 0 评论 -
每日一题:无重复字符的最长子串(中等)
3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke”原创 2020-09-15 20:03:26 · 313 阅读 · 0 评论 -
每日一题:二叉树的中序遍历(中等)
94. 二叉树的中序遍历给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?迭代算法完成:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNod原创 2020-09-14 20:56:17 · 337 阅读 · 0 评论 -
每日一题:单词搜索(中等)
79. 单词搜索给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board = [ [‘A’,‘B’,‘C’,‘E’], [‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’] ]给定 word = “ABCCED”,返回 true给定 word = “SEE”,返回 true给定 word =原创 2020-09-14 17:44:41 · 318 阅读 · 0 评论 -
每日一题:两数相加(中等)
2. 两数相加给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807思路:链表将两个链表看成是相同长度的进行原创 2020-09-12 20:37:44 · 311 阅读 · 0 评论 -
每日一题 :二叉树的层平均值(简单)
637. 二叉树的层平均值给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。示例 1:输入: 3 / \ 9 20 / \ 15 7 输出:[3, 14.5, 11] 解释: 第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3,14.5, 11]提示:节点值的范围在32位有符号整数范围内。上代码:/** * Definition for a binar原创 2020-09-12 14:18:51 · 583 阅读 · 0 评论 -
每日一题 :股票的最大利润(中等)
剑指 Offer 63. 股票的最大利润假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4] 输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 =6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。示例 2:输入: [7,6,4,3,1] 输出: 0解释: 在这种情况下, 没有交易完成, 所以最大利润为原创 2020-09-11 17:42:52 · 345 阅读 · 0 评论 -
每日一题 :组合总和 III(中等)
216. 组合总和 III找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。 解集不能包含重复的组合。示例 1:输入: k = 3, n = 7 输出: [[1,2,4]]示例 2:输入: k = 3, n = 9 输出: [[1,2,6], [1,3,5], [2,3,4]]class Solution { List<Integer> list = new Array原创 2020-09-11 08:56:41 · 313 阅读 · 0 评论 -
每日一题 :组合总和 II(中等)
组合总和 II给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8, 所求解集为: [ [1, 7],[1, 2, 5], [2, 6], [1, 1, 6].原创 2020-09-10 20:51:13 · 344 阅读 · 0 评论 -
每日一题 :数组中数字出现的次数(中等)
剑指 Offer 56 - I. 数组中数字出现的次数一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6] 输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3] 输出:[2,10] 或 [10,2][转载] (https://blog.csdn.net/yyxyuxueYang/article/detai原创 2020-09-09 20:59:27 · 273 阅读 · 0 评论