![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
liuxinyu9795
这个作者很懒,什么都没留下…
展开
-
2020京东秋招笔试题1 && LeetCode768 最多能完成排序的块II
题目:arr是一个可能包含重复元素的整数数组,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。解法一:暴力法思路:设一个值为max,记录从左到右遍历时,数组的最大值;当数组的最大值小于等于当前的数,判断之后的数是否有比数组最大值小的,如果没有,就可以从这里断开,如果有则不行代码:public static int getC...原创 2019-08-25 13:27:16 · 525 阅读 · 2 评论 -
LeetCode 102 二叉树的层次遍历
102 二叉树的层次遍历给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]方法一:BFS广度搜索算法思路:其实这道题的意思就是让...原创 2019-06-03 14:54:18 · 227 阅读 · 0 评论 -
LeetCode 104 二叉树的最大深度
104 二叉树的最大深度 腾讯精选50给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。方法:分治法思路:很简单,对于每一个节点,对他...原创 2019-06-03 16:11:32 · 130 阅读 · 0 评论 -
LeetCode 098 验证二叉搜索树
LeetCode 098 验证二叉搜索树题目:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 ...原创 2019-05-22 10:40:31 · 144 阅读 · 0 评论 -
LeetCode 92 翻转链表II &vivo笔试第二题
92 翻转链表II题目:反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL方法:逐步交换法思路:创建一个虚拟节点,先遍历到m的位置,用三个指针分别指...原创 2019-06-05 12:00:24 · 143 阅读 · 0 评论 -
LeetCode 072 编辑距离
LeetCode 072 编辑距离给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入: word1 = "horse", word2 = "ros"输出: 3解释: horse -> rorse (将 'h' 替换为 'r')ror...原创 2019-06-10 23:20:19 · 100 阅读 · 0 评论 -
LeetCode 070 爬楼梯
070 爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. ...原创 2019-06-08 20:10:14 · 102 阅读 · 0 评论 -
LeetCode 69 x的平方根
69 x的平方根题目:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。方法:二分查找法思路:确定左右边界,如果是求整数,...原创 2019-06-07 22:13:20 · 113 阅读 · 0 评论 -
LeetCode 52 N皇后II
52 N皇后IIn 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回 n 皇后不同的解决方案的数量。示例:输入: 4输出: 2解释: 4 皇后问题存在如下两个不同的解法。[ [".Q..", // 解法 1 "...Q", "Q...", "..Q."], [".....原创 2019-06-04 10:39:35 · 127 阅读 · 0 评论 -
LeetCode 51 N皇后
51 N皇后n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入: 4输出: [ [".Q..", // 解法 1 "...Q...原创 2019-06-03 20:47:52 · 192 阅读 · 0 评论 -
LeetCode 037 解数独
037 解数独题目:编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 ‘.’ 表示。一个数独。答案被标成红色。Note:给定的数独序列只包含数字 1-9 和字符 ‘.’ 。你可以假设给定的数独只有唯一...原创 2019-06-07 00:35:04 · 194 阅读 · 0 评论 -
LeetCode 050 Pow(x,n)
050 Pow(x,n)题目:实现 pow(x, n) ,即计算 x 的 n 次幂函数。 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示例 2: 输入: 2.10000, 3 输出: 9.26100 示例 3: 输入: 2.00000, -2 输出: 0.25000 解释: 2-2 = 1/...原创 2019-05-12 17:25:34 · 111 阅读 · 0 评论 -
LeetCode 049 字母异位词分组
049 字母异位词分组题目:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输入均为小写字母。不考虑答案输出的顺序。方...原创 2019-05-12 14:58:56 · 146 阅读 · 0 评论 -
LeetCode 046 全排列
046 全排列 腾讯精选50题目简述:给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]方法:递归法思路:用一个for循环来先添加num[i],然后再调用该函数进行之后的添加两点需要注意的:(1)如果l...原创 2019-05-07 20:04:53 · 314 阅读 · 0 评论 -
LeetCode 048 旋转图像
048 旋转图像题目详解:给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2],...原创 2019-05-09 20:20:00 · 207 阅读 · 0 评论 -
LeetCode 047 全排列II
047 全排列II题目介绍:给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]方法:回溯,递归法思路:跟上一题很相似,只是不返回重复的值,就加一个数组来判断这个数是否使用过,使用过,就让数组为true,当这个i回溯完了,就将数组设为false。注意判断条件:used[i...原创 2019-05-09 19:21:27 · 137 阅读 · 0 评论 -
LeetCode 045 跳跃游戏II
045 跳跃游戏II题目:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。解题法:贪心...原创 2019-05-07 09:38:20 · 181 阅读 · 0 评论 -
LeetCode 044 通配符匹配
044 通配符匹配题目:给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。方法:动态规划如何发现是动态规划的...原创 2019-05-06 19:32:51 · 218 阅读 · 0 评论 -
LeetCode 120 三角形最小路径和
120 三角形最小路径和题目:给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。方法:动态规划法1.DP状态的定义:dp[j]这里是代表[i.j]这个数的下面两个数最小的点数和+自己的点数2.D...原创 2019-06-08 21:30:17 · 97 阅读 · 0 评论 -
LeetCode 121 买卖股票的最佳时机
121 买卖股票的最佳时机题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 =...原创 2019-06-12 01:43:43 · 134 阅读 · 0 评论 -
LeetCode 111 二叉树的最小深度
111 二叉树的最小深度给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度2方法:分治法思路:先判断是否root为空,左右子树为空,如果左右子树...原创 2019-06-03 16:21:41 · 146 阅读 · 0 评论 -
LeetCode 703 数据流中的最k大元素
703 数据流中的最k大元素题目:设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含数据流中的初始元素。每次调用 KthLargest.add,返回当前数据流中第K大的元素。示例:int k = 3;int[] arr = [4,5,8,2];K...原创 2019-05-13 22:32:51 · 254 阅读 · 0 评论 -
LeetCode 338 比特位计数
338 比特位计数题目:给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]方法:位运算法思路:最后我们需要返回一个每个数有多少1数的数组,由我们平时位运算的思路,可以推导:a[i]=a[i&...原创 2019-06-08 15:42:24 · 202 阅读 · 0 评论 -
LeetCode 322 零钱兑换
322 零钱兑换题目:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出:...原创 2019-06-09 23:26:47 · 128 阅读 · 0 评论 -
LeetCode 225 用队列实现栈
225 用队列实现栈题目:使用队列实现栈的下列操作:push(x) -- 元素 x 入栈pop() -- 移除栈顶元素top() -- 获取栈顶元素empty() -- 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。你所使用的语言也许不支持队列。 ...原创 2019-05-13 14:24:54 · 122 阅读 · 0 评论 -
LeetCode 300 最长上升子序列
300 最长上升子序列题目:给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。方法一:dp动态规划1.dp状态的定义:dp[i]:从最左边到第i个的最长上升子序列的长度2.dp方程:dp[i]=max(0-i-1的所有中最长上升子序列再加1...原创 2019-06-09 22:58:16 · 123 阅读 · 0 评论 -
LeetCode 242 有效的字母异位词
242 有效的字母异位词题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。方法一:sort排序法思路:将两个String字符串转换...原创 2019-05-14 13:50:29 · 138 阅读 · 0 评论 -
LeetCode 239 滑动窗口最大值
239 滑动窗口最大值题目:给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口 k 内的数字。滑动窗口每次只向右移动一位。返回滑动窗口最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释:滑动窗口的位置 最大值[1 3 -...原创 2019-05-14 10:59:33 · 402 阅读 · 0 评论 -
LeetCode 236 二叉树的最近公共祖先
236 二叉树的最近公共祖先 腾讯精选50给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例...原创 2019-06-01 22:49:19 · 178 阅读 · 0 评论 -
LeetCode 235 二叉搜索树的最近公共祖先
235 二叉搜索树的最近公共祖先 腾讯精选50给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,...原创 2019-06-01 22:31:57 · 674 阅读 · 0 评论 -
LeetCode 232 用栈实现队列 &&剑指Offer 005
232 用栈实现队列题目: 使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。 示例: MyQueue queue = new MyQueue(); queue.push(1); ...原创 2019-05-13 13:47:48 · 156 阅读 · 0 评论 -
LeetCode 231 2的幂
231 2的幂题目:给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false看到幂或者位这些就要想到用位运算来解决方法:位运算思路:如果她是2的幂次方,它的二进制位一定是只有一个1,其他都是0,就直接减去一个...原创 2019-06-08 13:52:56 · 101 阅读 · 0 评论 -
LeetCode 208 实现 Trie (字典树)
208 实现 Trie (字典树)题目:实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。示例:Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // 返回 truetrie.search("app"); // 返回 falsetr...原创 2019-06-08 00:20:44 · 210 阅读 · 0 评论 -
LeetCode 206 反转链表
206 反转链表 腾讯精选50题目简介:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL这道题十分的基础,也是链表的常考题,所以要写的比较简洁才算比较成功方法:迭代法思路:创建两个指针cur(现指),pre(之前)分别指向head和null,判断如果cur...原创 2019-05-12 19:51:21 · 104 阅读 · 0 评论 -
LeetCode 141 环形链表
141 环形链表 腾讯精选50题目简介:给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1...原创 2019-05-12 21:44:44 · 131 阅读 · 0 评论 -
LeetCode 122 买卖股票的最佳时机II
122 买卖股票的最佳时机II 腾讯精选50给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 ...原创 2019-06-03 00:51:12 · 99 阅读 · 0 评论 -
LeetCode 123 买卖股票的最佳时机 III
123 买卖股票的最佳时机 III题目:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 ...原创 2019-06-12 18:15:10 · 166 阅读 · 0 评论 -
LeetCode 043 字符串相乘
043 字符串相乘 腾讯精选50给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例 2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1 和 num2 的长度小于110。n...原创 2019-04-29 19:46:25 · 171 阅读 · 0 评论 -
LeetCode 038 报数
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (“一个二” , “一个一...原创 2019-04-20 00:27:26 · 133 阅读 · 0 评论 -
LeetCode 042 接雨水
LeetCode 042 接雨水题目:给定 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-04-28 22:37:47 · 156 阅读 · 0 评论