![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
卖山竹的山兔
这个作者很懒,什么都没留下…
展开
-
lc_other_20_括号isValid
/*题目:有效的括号 simple给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输入: "([)]"输出: false示例 5...原创 2020-08-31 11:38:26 · 195 阅读 · 0 评论 -
lc_dbp_19_removeNthFromEnd
/*题目:删除链表的倒数第N个节点 middle给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?思路: 一次遍历:双指针。 需找到倒数n个节点的前一个节点target。 当快指针到尾部,慢指针应该在...原创 2020-08-31 10:55:07 · 236 阅读 · 0 评论 -
lc_dbp_18_fourSum
/*题目:四数之和给定一个包含 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...原创 2020-08-23 12:29:12 · 223 阅读 · 0 评论 -
lc_dfs_17_letterCombinations
/*题目:电话号码的字母组合 middle给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序思路:dfs*/package leetCode.Other;import...原创 2020-08-15 17:41:41 · 118 阅读 · 0 评论 -
lc_other_4_findMedianSortedArrays
/*题目:寻找两个正序数组的中位数 hard(其实也没有很难)给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + 3)/2 = 2.5思路原创 2020-08-15 13:10:42 · 134 阅读 · 0 评论 -
lc_dbp_16_threeSumClosest
/*题目:最接近的三数之和 middle给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示: 3 <= nums.length <= 10^3 -...原创 2020-08-10 18:00:47 · 137 阅读 · 0 评论 -
lc_dbp_15_threeSum
/*题目: 三数之和 middle给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]思路:dfs或者3层for循环会超时排序+双指针1)排序后,遍历每个nums元...原创 2020-08-10 11:35:35 · 146 阅读 · 0 评论 -
lc_string_65_isNumber
/*题目:有效数字 hard(其实投机取巧的话不是很难)验证给定的字符串是否可以解释为十进制数字。例如:"0" => true" 0.1 " => true"abc" => false"1 a" => false"2e10" => true" -90e3 " => true" 1e" => false"e3" => false" 6e-1" => true" 99e2.5 " => false"53.5e93" =..原创 2020-08-09 19:58:47 · 176 阅读 · 0 评论 -
lc_other_14_longestCommonPrefix
/*题目:最长公共前缀 simple编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。思路:1)每条字符串对应index比较,不相等时直接返回已相等的部分:本题采用2)字符串两两比较,先得到str1和str2的公共前缀ans,再得到ans和str3.原创 2020-08-08 11:46:22 · 116 阅读 · 0 评论 -
lc_other_13_romanToInt
题目: 罗马数字转整数 simple罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如: 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。27 写做 X...原创 2020-08-08 11:08:50 · 124 阅读 · 0 评论 -
lc_other_12_intToRoman
题目:整数转罗马数字 middle罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如: 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做...原创 2020-08-07 18:33:29 · 166 阅读 · 0 评论 -
lc_other_11_maxArea
/*题目:盛最多水的容器 middle给你 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-08-07 13:02:12 · 101 阅读 · 0 评论 -
lc_other_9_isPalindrome
题目:回文数 simple判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进阶:你能不将整数转为字符串来解决这个问题吗?package leetCo..原创 2020-08-06 22:29:21 · 99 阅读 · 0 评论 -
lc_other_8_myAtoi
题目:字符串转换整数 (atoi) middle请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: 1.如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来, 形成一个有符号整数。 2.假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。 3.该字符串在有效的整数部分之后也可能会存在多余的字符,那...原创 2020-08-06 21:26:16 · 93 阅读 · 0 评论 -
lc_other_7_reverseInt
题目:整数反转 simple给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。思路:注意:不能使用long来存储计算结果,题目已有要求32位溢出条件有两个,一个是大于整.原创 2020-07-16 11:45:08 · 136 阅读 · 0 评论 -
lc_String_6_convert
题目:Z 字形变换 middle将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。package leetCode.String;import java.util.ArrayList;import java.util.List;public class lc_String_6_convert {/*题目:Z 字形变换 middle将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "LEETCODEISHIRING" 行.原创 2020-07-14 11:28:37 · 83 阅读 · 0 评论 -
lc_linkedList_1_addTwoNumbers
/*题目:两数相加 middle给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807*//*思路:1)将短的补0和原创 2020-07-12 22:50:46 · 92 阅读 · 0 评论 -
lc_other_1_twoSum
/*题目:两数之和 simple给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]*//*思路:采用hashMap进行优化,空间换时间,O(n)*/packa.原创 2020-07-12 21:51:44 · 98 阅读 · 0 评论 -
lc_bfs_542_updateMatrix
题目:01 矩阵 middle给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:0 0 00 1 00 0 0输出:0 0 00 1 00 0 0示例 2:输入:0 0 00 1 01 1 1输出:0 0 00 1 01 2 1注意: 给定矩阵的元素个数不超过 10000。 给定矩阵中至少有一个元素是 0。 矩阵中的元素只在四个方向上相邻: 上、下、左、右。...原创 2020-07-09 12:43:21 · 287 阅读 · 1 评论 -
lc_bfs_529_updateBoard
题目:扫雷游戏 middle让我们一起来玩扫雷游戏!给定一个代表游戏板的二维字符矩阵。 'M' 代表一个未挖出的地雷,'E' 代表一个未挖出的空方块,'B' 代表没有相邻(上,下,左,右,和所有4个对角线)地雷的已挖出的空白方块,数字('1' 到 '8')表示有多少地雷与这块已挖出的方块相邻,'X' 则表示一个已挖出的地雷。现在给出在所有未挖出的方块中('M'或者'E')的下一个点击位置(行和列索引),根据以下规则,返回相应位置被点击后对应的面板:*如果一个地雷('M')被挖出,游戏就.原创 2020-07-06 18:40:57 · 75 阅读 · 0 评论 -
lc_bfs_515_largestValues
题目:在每个树行中找最大值 middle您需要在二叉树的每一行中找到最大的值。示例:输入: 1 / \ 3 2 / \ \ 5 3 9输出: [1, 3, 9]思路:经典bfs,只需再每层遍历时比较找出每层的最大值package leetCode.BFS;import java.util.ArrayDeque;import java.util.ArrayList;imp...原创 2020-07-06 09:13:14 · 83 阅读 · 0 评论 -
lc_bfs_513_findBottomLeftValue
题目:找树左下角的值 middle给定一个二叉树,在树的最后一行找到最左边的值。示例 1:输入: 2 / \ 1 3输出:1示例 2:输入: 1 / \ 2 3 / / \ 4 5 6 / 7输出:7注意: 您可以假设树(即给定的根节点)不为 NULL。思路:经典的bfs,只需要记录每层的第一个结点值即可package leetC...原创 2020-07-06 08:36:50 · 152 阅读 · 0 评论 -
lc_bfs_429_levelOrder
/*题目:N叉树的层序遍历 middle给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。例如,给定一个 3叉树 :返回其层序遍历:[ [1], [3,2,4], [5,6]]*//*思路:经典的bfs,不再赘述*/package leetCode.BFS;import java.util.ArrayDeque;import java.util.ArrayList;import java.util.L...原创 2020-07-06 08:23:36 · 90 阅读 · 0 评论 -
lc_bfs_417_pacificAtlantic
/*题目:太平洋大西洋水流问题 middle给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度。“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界。规定水流只能按照上、下、左、右四个方向流动,且只能从高到低或者在同等高度上流动。请找出那些水流既可以流动到“太平洋”,又能流动到“大西洋”的陆地单元的坐标。提示: 输出坐标的顺序不重要 m 和 n 都小于150示例:给定下面的 5x5 矩阵: 太平洋 ~ ~ ~ ~...原创 2020-07-05 22:39:51 · 118 阅读 · 0 评论 -
lc_bfs_210_findOrder
/*题目: 课程表 II middle现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回一种就可以了。如果不可能完成所有课程,返回一个空数组。示例 1:输入: 2, [[1,0]]输出: [0,1]解释: 总共有 2 门课程。要学习课程 1,你需要先完成原创 2020-07-05 15:33:07 · 104 阅读 · 0 评论 -
lc_bfs_207_canFinish
题目:课程表 middle你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1],给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]]输出: true解释: 总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以这是可能的。示例 2:输入: 2, [[1,0],[0,原创 2020-07-05 10:45:19 · 86 阅读 · 0 评论 -
lc_bfs_200_numIslands
题目:岛屿数量 middle给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:[['1','1','1','1','0'],['1','1','0','1','0'],['1','1','0','0','0'],['0','0','0','0','0']]输出: 1示例 2:输入:[['1','1.原创 2020-07-04 22:44:17 · 77 阅读 · 0 评论 -
lc_bfs_199_rightSideView
题目:二叉树的右视图 middle给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。package leetCode.BFS;import java.util.ArrayDeque;import java.util.LinkedList;import java.util.List;public class lc_bfs_199_rightSideView {/*题目:二叉树的右视图 middle给定一棵二叉树,想象自己站在它的右侧,按.原创 2020-07-04 11:12:21 · 113 阅读 · 0 评论 -
lc_bfs_133_cloneGraph
/*题目:克隆图 middle给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。class Node { public int val; public List<Node> neighbors;}测试用例格式:简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1(val = 1),第二个节点值为 2(val = 2),以此类推。该图在测试用例中...原创 2020-07-03 23:45:32 · 90 阅读 · 0 评论 -
lc_bfs_126_findLadders
题目:单词接龙 II hard给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则: 每次转换只能改变一个字母。 转换后得到的单词必须是字典中的单词。说明: 如果不存在这样的转换序列,返回一个空列表。 所有单词具有相同的长度。 所有单词只由小写字母组成。 字典中不存在重复的单词。 你可以假设 beginWord 和 endWo...原创 2020-07-03 16:23:22 · 100 阅读 · 0 评论 -
lc_bfs_127_ladderLength
题目:单词接龙给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则: 1.每次转换只能改变一个字母。 2.转换过程中的中间单词必须是字典中的单词。说明: 如果不存在这样的转换序列,返回 0。 所有单词具有相同的长度。 所有单词只由小写字母组成。 字典中不存在重复的单词。 你可以假设 beginWord 和 endWord 是非空的,且二者不相同...原创 2020-07-03 09:17:53 · 151 阅读 · 0 评论 -
lc_bfs_1_levelOrderBottom
题目:二叉树的层次遍历 II simple给定一个二叉树,返回其节点值自底向上的层次遍历。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)package leetCode.BFS;import java.util.ArrayDeque;import java.util.Deque;import java.util.LinkedList;import java.util.List;public class lc_bfs_1_levelOrderBottom {/*题目.原创 2020-06-26 18:15:55 · 112 阅读 · 0 评论 -
lc_bfs_103_zigzagLevelOrder
题目: 二叉树的锯齿形层次遍历 middle 给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。package leetCode.BFS;import java.util.*;public class lc_bfs_103_zigzagLevelOrder {/*题目: 二叉树的锯齿形层次遍历 middle 给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与.原创 2020-06-26 13:16:30 · 137 阅读 · 0 评论 -
lc_bfs_310_findMinHeightTrees
题目:最小高度树 middle 对于一个具有树特征的无向图,我们可选择任何一个节点作为根。图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树。给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们的根节点。格式: 该图包含 n 个节点,标记为 0 到 n - 1。给定数字 n 和一个无向边 edges 列表(每一个边都是一对标签)。你可以假设没有重复的边会出现在 edges 中。由于所有的边都是无向边, [0, 1]和 [1, 0] 是相同的,因此不会同时...原创 2020-06-25 21:12:54 · 106 阅读 · 0 评论 -
lc_bfs_1162_maxDistance
题目:地图分析 middle 你现在手里有一份大小为 N x N 的「地图」(网格) grid,上面的每个「区域」(单元格)都用0和1 标记好了。其中 0 代表海洋,1 代表陆地。 (图见原题)https://leetcode-cn.com/problems/as-far-from-land-as-possible/?utm_source=LCUS&utm_medium=ip_redirect_q_uns&utm_campaign=transfer2china 请你找...原创 2020-06-24 13:35:20 · 261 阅读 · 0 评论 -
lc_bfs_117_connect
题目:填充每个节点的下一个右侧节点指针II middlepackage leetCode.BFS;public class lc_bfs_117_connect {/*题目:填充每个节点的下一个右侧节点指针II middle给定一个二叉树struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针.原创 2020-06-24 11:17:19 · 85 阅读 · 0 评论 -
lc_bfs_102_levelOrder
题目:二叉树的层序遍历 middle给你一个二叉树,请你返回其按 层序遍历 得到的节点值。(即逐层地,从左到右访问所有节点)。package leetCode.BFS;import java.util.LinkedList;import java.util.List;public class lc_bfs_102_levelOrder {/*题目:二叉树的层序遍历 middle给你一个二叉树,请你返回其按 层序遍历 得到的节点值。(即逐层地,从左到右访问所有节点)。示例:二叉.原创 2020-06-24 11:15:33 · 84 阅读 · 0 评论 -
lc_dfs_688_knightProbability
题目:“马”在棋盘上的概率 middle 已知一个 NxN 的国际象棋棋盘,棋盘的行号和列号都是从 0 开始。即最左上角的格子记为 (0, 0),最右下角的记为 (N-1, N-1)。现有一个 “马”(也译作 “骑士”)位于 (r, c) ,并打算进行 K 次移动。如下图所示,国际象棋的 “马” 每一步先沿水平或垂直方向移动 2 个格子,然后向与之相垂直的方向再移动 1 个格子,共有 8 个可选的位置。 现在 “马” 每一步都从可选的位置(包括棋盘外部的)中独立随机地选择一个进行...原创 2020-06-23 14:54:07 · 92 阅读 · 0 评论 -
lc_dfs_130_surroundByX
题目:被围绕的区域 middle给定一个二维的矩阵,包含 'X' 和 'O'(字母 O)。找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的 'O' 都不会被填充为 'X'。任何不在边界上,或不与边界上的 'O' 相连的 'O' 最终都会被..原创 2020-06-19 16:20:21 · 120 阅读 · 0 评论 -
lc_dfs_129_sumNumbers
题目:求根到叶子节点数字之和 middle给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。package leetCode.DFS;public class lc_dfs_129_sumNumbers {/*题目:求根到叶子节点数字之和 middle给定一个二叉树,它的每个结点都存放一个原创 2020-06-19 11:14:30 · 97 阅读 · 0 评论