leetcode力扣
慕容靓柏
这个作者很懒,什么都没留下…
展开
-
LeetCode17 电话号码的字母组合 解法与分析
问题描述:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。来源:力扣(LeetC...原创 2019-09-24 18:22:34 · 223 阅读 · 0 评论 -
LeetCode算法入门 打家劫舍 解法与分析
问题描述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你**在不触动警报装置的情况下,**能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1)...原创 2019-09-09 11:44:16 · 173 阅读 · 0 评论 -
LeetCode算法入门 买卖股票的最佳时机 解法与分析
问题描述:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...原创 2019-09-02 14:49:16 · 126 阅读 · 0 评论 -
LeetCode算法入门 爬楼梯 解法与分析
问题描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?**注意:**给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2...原创 2019-09-02 11:58:27 · 196 阅读 · 0 评论 -
LeetCode算法入门 第一个错误的版本 解法与分析
问题描述:你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元...原创 2019-08-29 21:19:26 · 138 阅读 · 0 评论 -
LeetCode算法入门 合并两个有序数组 解法与分析
问题描述:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中*,*使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3n...原创 2019-08-29 20:38:11 · 163 阅读 · 0 评论 -
LeetCode算法入门 将有序数组转换为二叉搜索树 解法与分析
问题描述:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / ...原创 2019-08-27 21:27:11 · 131 阅读 · 0 评论 -
LeetCode算法入门 二叉树的层次遍历 解法与分析
问题描述:给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]解法一:使用递归方法。代码如下:/** * Definiti...原创 2019-08-27 21:03:47 · 102 阅读 · 0 评论 -
LeetCode算法入门 删除链表的倒数第N个节点 解法与分析
问题描述:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?解法一:扫描两遍,第一遍知道长度,第二遍就可以删除倒数第N个结点。...原创 2019-08-13 11:56:44 · 145 阅读 · 0 评论 -
LeetCode算法入门 验证二叉搜索树 解法与分析
问题描述:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \ 3 ...原创 2019-08-21 21:15:46 · 104 阅读 · 0 评论 -
LeetCode算法入门 对称二叉树 解法与分析
问题描述:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3说明:如果你可以运用递归和迭代两种方法解决这...原创 2019-08-23 21:19:21 · 100 阅读 · 0 评论 -
LeetCode算法入门 合并两个有序链表 解法与分析
问题描述:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解法一:暴力法,因为两个链表都是有序的,所以按顺序一个节点一个节点比大小。代码如下:/** * Definition for singly-l...原创 2019-08-14 21:11:56 · 134 阅读 · 0 评论 -
LeetCode算法入门 Shuffle an Array 解法与分析
问题描述:打乱一个没有重复元素的数组。示例:// 以数字集合 1, 2 和 3 初始化数组。int[] nums = {1,2,3};Solution solution = new Solution(nums);// 打乱数组 [1,2,3] 并返回结果。任何 [1,2,3]的排列返回的概率应该相同。solution.shuffle();// 重设数组到它的初始状态[1,2,3...原创 2019-09-09 14:27:31 · 81 阅读 · 0 评论 -
LeetCode算法入门 最小栈 解法与分析
问题描述:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(...原创 2019-09-09 14:58:33 · 92 阅读 · 0 评论 -
LeetCode算法入门 Fizz Buzz 解法与分析
问题描述:写一个程序,输出从 1 到 n 数字的字符串表示。1.如果 n 是3的倍数,输出“Fizz”;2.如果 n 是5的倍数,输出“Buzz”;3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。示例:n = 15,返回:[ "1", "2", "Fizz", "4", "Buzz", "Fizz", "7",...原创 2019-09-09 15:17:00 · 396 阅读 · 0 评论 -
LeetCode15 三数之和 解法与分析
问题描述:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]来源:力扣(...原创 2019-09-24 17:30:51 · 138 阅读 · 0 评论 -
LeetCode算法入门 缺失数字 解法与分析
问题描述:给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?解法一:用排序,然后找哪个数字不在。思路:此题只需要采用位运算,每次将原来...原创 2019-09-19 10:03:29 · 304 阅读 · 0 评论 -
LeetCode算法入门 有效的括号 解法与分析
问题描述:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 ...原创 2019-09-18 18:50:01 · 141 阅读 · 0 评论 -
LeetCode算法入门 帕斯卡三角形(杨辉三角) 解法与分析
问题描述:给定一个非负整数 *numRows,*生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]解法一:想不到,看了看力扣的大佬回答:思路:此题只需要采用位运算,每次将原来的数字向左移动1位,就...原创 2019-09-18 18:35:31 · 376 阅读 · 0 评论 -
LeetCode算法入门 颠倒二进制位 解法与分析
问题描述:颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596, 因此返回 964176192,其二进制表示形式...原创 2019-09-18 17:45:39 · 180 阅读 · 0 评论 -
LeetCode算法入门 汉明距离 解法与分析
问题描述:两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。解法一:暴力法:遍历32...原创 2019-09-18 15:51:57 · 208 阅读 · 0 评论 -
LeetCode算法入门 位1的个数 解法与分析
问题描述:编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。示例 2:输入:000000000000000000000000100...原创 2019-10-25 09:20:52 · 221 阅读 · 0 评论 -
LeetCode算法入门 罗马数字转整数 解法与分析
问题描述:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并...原创 2019-09-18 11:35:25 · 126 阅读 · 0 评论 -
LeetCode11 盛最多水的容器 解法与分析
问题描述:给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水...原创 2019-09-17 19:05:43 · 151 阅读 · 0 评论 -
LeetCode9 回文数 解法与分析
问题描述:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文...原创 2019-09-17 18:41:53 · 137 阅读 · 0 评论 -
LeetCode算法入门 3的幂 解法与分析
问题描述:给定一个整数,写一个函数来判断它是否是 3 的幂次方。示例 1:输入: 27输出: true示例 2:输入: 0输出: false示例 3:输入: 9输出: true示例 4:输入: 45输出: false进阶:你能不使用循环或者递归来完成本题吗?解法一:使用循环。代码如下:class Solution {public: bool ...原创 2019-09-11 14:23:41 · 191 阅读 · 0 评论 -
LeetCode算法入门 计数质数 解法与分析
问题描述:统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。解法一:一个一个判断,判断到这个数的平方根的位置。代码如下:class Solution {public: bool isPrimeNum(int n){ for(int i = 2 ;i <=...原创 2019-09-10 18:51:01 · 217 阅读 · 0 评论 -
LeetCode算法入门 二叉树的最大深度 解法与分析
问题描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。解法一:使用递归方法。代码如下:/** * Definition fo...原创 2019-08-19 19:47:29 · 93 阅读 · 0 评论 -
LeetCode算法入门 环形链表 解法与分析
问题描述:给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出...原创 2019-08-19 17:25:55 · 165 阅读 · 0 评论 -
LeetCode算法入门 回文链表 解法与分析
问题描述:请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?解法一:扫描整个链表,把数字存到数组里面,然后判断是不是回文。但是这个方法使用了额外空间。解法二:使用快慢指针分三步做:其一,find ...原创 2019-08-19 16:58:40 · 92 阅读 · 1 评论 -
LeetCode算法入门 两个数组的交集 II 解法与分析
问题描述:给定两个数组,编写一个函数来计算它们的交集。题目来自于力扣:https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/26/解法一:使用C++表map。存nums1中的元素,之后在nums2中进行对比,有就添加到结果数组中。class Solution {publi...原创 2019-08-05 20:45:55 · 111 阅读 · 0 评论 -
LeetCode算法入门 只出现一次的数字 解法与分析
问题描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解法一:暴力法,双重循环,一个一个比。效率比较低,在下大懒虫一个,故在这此就不写了。解法二:使...原创 2019-08-05 20:28:13 · 91 阅读 · 0 评论 -
LeetCode算法入门 存在重复 解法与分析
问题描述:给定一个整数数组,判断是否存在重复元素。题目来自于https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/24/解法一:暴力法,双重循环,一个一个比,有重复直接返回false;没重复就返回true。效率比较低,在下大懒虫一个,故在这此就不写了。解法二:使用...原创 2019-08-05 19:34:25 · 111 阅读 · 0 评论 -
LeetCode算法入门 旋转数组解法与分析
问题描述:说明:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。要求使用空间复杂度为 O(1) 的 原地 算法。解法一:使用双重循环,每次旋转一位。注意k的值可能要大于nums.size(),所以要取余数。代码如下:class Solution {public: void rotate(vector<int>& nums, int ...原创 2019-08-05 19:10:45 · 175 阅读 · 0 评论 -
LeetCode 3. 无重复字符的最长子串 解法与分析
题目为:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因...转载 2019-07-22 17:32:14 · 94 阅读 · 0 评论 -
LeetCode7 整数反转 解法与分析
问题描述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。解法一:实不...原创 2019-07-30 21:11:24 · 127 阅读 · 0 评论 -
LeetCode6 Z 字形变换 解法与分析
问题描述:将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换...原创 2019-07-30 20:26:34 · 159 阅读 · 0 评论 -
LeetCode算法入门 买卖股票的最佳时机 II 解法与分析
问题描述:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。**注意:**你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖...原创 2019-08-02 16:54:47 · 109 阅读 · 0 评论 -
LeetCode算法入门 从排序数组中删除重复项 解法与分析
问题描述:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 ...原创 2019-08-02 16:35:07 · 134 阅读 · 0 评论 -
LeetCode 5.最长回文子串 解法与分析
问题描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"先介绍一下回文:回文是一个正读和反读都相同的字符串,例如,“aba” 是回文,而 “abc” 不是回文。解法一:暴力法 老规矩,能想到用暴力...原创 2019-07-29 20:52:28 · 162 阅读 · 0 评论