![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode算法题分析
哪得小师弟
这个作者很懒,什么都没留下…
展开
-
LeetCode算法题1:两数之和分析
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]这个题暴力搜索就不分析了,说一下思路就行,暴力搜索就是设置两个循环,逐个查找一个数与其它所有数的和是...原创 2018-10-18 21:14:04 · 427 阅读 · 0 评论 -
LeetCode算法题2:两数相加解析
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807这个题要是对链表不太熟悉的话会挺吃力,其实算...原创 2018-10-19 09:50:19 · 219 阅读 · 0 评论 -
LeetCode算法题7:反转整数
给定一个 32 位有符号整数,将整数中的数字进行反转。示例1:输入: 123输出: 321示例2:输入: -123输出: -321示例3:输入: 120输出: 21注意:假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。这个题目实在不能太简单,记得刚学c语言的时候就做过这个题,但...原创 2018-10-22 17:39:00 · 164 阅读 · 0 评论 -
LeetCode算法题3:无重复字符的最长子串解析
给定一个字符串,找出不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 3。示例2:输入: "bbbbb"输出: 1解释: 无重复字符的最长子串是 "b",其长度为 1。示例3:输入: "pwwkew"输出: 3解释: 无重复字符的最长子串是 "wke",其长度为 3。 请注意,原创 2018-10-20 15:59:28 · 590 阅读 · 0 评论 -
LeetCode算法题21:合并两个有序链表解析
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4因为之前做过两数之和的那道题,所以一开始并没有审清楚题,这个题的后一句提示很重要,是直接拼接两个链表的所有节点,也就是说其实不需要原创 2018-10-25 11:10:55 · 920 阅读 · 0 评论 -
LeetCode算法题28:实现strStr()解析
实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例1:输入: haystack = "hello", needle = "ll"输出: 2示例2:输入: haystack = "aaaaa", needle = "bba"...原创 2018-10-28 20:25:48 · 429 阅读 · 0 评论 -
LeetCode算法题9:回文数解析
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。说实话,我的思路...原创 2018-10-23 10:40:08 · 476 阅读 · 1 评论 -
LeetCode算法题13:罗马数字转整数解析
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数...原创 2018-10-23 11:38:52 · 157 阅读 · 0 评论 -
LeetCode算法题14:最长公共前缀解析
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。这个题很有意思原创 2018-10-23 21:38:12 · 599 阅读 · 0 评论 -
LeetCode算法题35:搜索插入位置解析
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例1:输入: [1,3,5,6], 5输出: 2示例2:输入: [1,3,5,6], 2输出: 1示例3:输入: [1,3,5,6], 7输出: 4示例4:输入: [1,3,5,6], 0输出: 0这个题给了比较容...原创 2018-10-29 09:08:45 · 162 阅读 · 0 评论 -
LeetCode67:二进制求和解析
给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例1:输入: a = "11", b = "1"输出: "100"示例2:输入: a = "1010", b = "1011"输出: "10101"这个题的第一个想法就是把字符串直接转换成二进制数然后相加,之后再转换成字符串。但是这样也就没什么算法的意思了,C++中也没有这样原创 2018-10-31 09:56:42 · 239 阅读 · 0 评论 -
LeetCode算法题20:有效的括号解析
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false示例4:输入: "([...原创 2018-10-24 10:52:30 · 694 阅读 · 0 评论 -
LeetCode算法题26:删除排序数组中的重复项解析
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例2:给定 nu...原创 2018-10-26 18:49:18 · 193 阅读 · 0 评论 -
LeetCode算法题69:x的平方根解析
实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例1:输入: 4输出: 2示例2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。暴力法遍历整个实数集就不说了,虽然简单,但是时间复杂度太高。介绍两种算...原创 2018-10-31 15:10:11 · 832 阅读 · 0 评论 -
LeetCode算法题70:爬楼梯解析
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意: 给定 n 是一个正整数。示例1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 ...原创 2018-10-31 19:46:03 · 1090 阅读 · 0 评论 -
LeetCode算法题83:删除链表中的重复元素解析
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例1:输入: 1->1->2输出: 1->2示例2:输入: 1->1->2->3->3输出: 1->2->3这个题就是考察对链表的使用,很简单的思路,设定两个指针(也可以只设定一个,两个好理解),一个指向当前链表(当前指针),另一个指向下一个链表(下一个指针),然...原创 2018-10-31 20:24:13 · 354 阅读 · 0 评论 -
LeetCode算法题38:报数解析
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (“一个二” , “一个一...原创 2018-10-30 10:09:32 · 578 阅读 · 0 评论 -
LeetCode算法题53:最大子序和解析
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。这个题如果用暴力破解怕是复杂度有些过于高,可以采用动态规划的思想,假设n[i]存储前i个元素的最大连续和值,那么对于第i+1个元素,是否加和i+1个元素的...原创 2018-10-30 11:57:42 · 264 阅读 · 0 评论 -
LeetCode算法题27:移除元素解析
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为...原创 2018-10-27 20:43:21 · 195 阅读 · 0 评论 -
LeetCode算法题88:合并两个有序数组解析
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [...原创 2018-11-01 09:58:01 · 791 阅读 · 0 评论 -
LeetCode算法题100:相同的树解析
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例2:输入: 1 1...原创 2018-11-01 10:53:34 · 358 阅读 · 0 评论 -
LeetCode算法题58:最后一个单词的长度解析
给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明: 一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5这个题一开始误解了题目的意思,以为最后一个字符是空格的话也要返回0。其实是不论任何情况都返回最后一个单词的长度。这样的话就比较好想了,设定一个计数器,然后遍历整个字...原创 2018-10-30 20:53:22 · 302 阅读 · 0 评论 -
LeetCode算法题66:加一解析
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。这个题分析起来...原创 2018-10-30 22:04:48 · 247 阅读 · 0 评论 -
LeetCode算法题121:买卖股票的最佳时机解析
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利...原创 2018-11-06 09:06:45 · 755 阅读 · 0 评论 -
LeetCode算法题108:将有序数组转换为二叉搜索树解析
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5...原创 2018-11-03 15:24:30 · 167 阅读 · 0 评论 -
LeetCode算法题110:平衡二叉树解析
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例2:给定二叉树 [1,2,2,3,3,null,null,4,4] ...原创 2018-11-03 17:02:14 · 301 阅读 · 0 评论 -
LeetCode算法题101:对称二叉树解析
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [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说明:如果你可以运用递归和迭代两种方法解决这个问题,会很...原创 2018-11-01 21:04:08 · 220 阅读 · 0 评论 -
LeetCode算法题122:买卖股票的最佳时机 II 解析
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获...原创 2018-11-06 09:59:58 · 1171 阅读 · 0 评论 -
LeetCode算法题167:两数之和 II - 输入有序数组解析
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], targe...原创 2018-11-09 09:01:07 · 215 阅读 · 0 评论 -
LeetCode算法题168:Excel表列名称解析
给定一个正整数,返回它在 Excel 表中相对应的列名称。例如, 1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB ...示例1:输入: 1输出: "A"示例2:输入: 28输出: "AB"示例3:输入: 701输出: ...原创 2018-11-09 09:36:39 · 242 阅读 · 0 评论 -
LeetCode算法题104:二叉树的最大深度解析
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。这个题的解析我讲不过官方解答,它有图—>[link]https://leetcode...原创 2018-11-02 09:29:20 · 550 阅读 · 0 评论 -
LeetCode算法题169:求众数解析
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例1:输入: [3,2,3]输出: 3示例2:输入: [2,2,1,1,1,2,2]输出: 2这个题可以直接设置一个哈希表字典去计数每一个值出现的次数然后取次数最多的数,但是试过之后发现超过空间限制,说明还是限制了空间复杂度。因...原创 2018-11-09 21:47:09 · 2195 阅读 · 1 评论 -
LeetCode算法题171:Excel表列序号解析
给定一个Excel表格中的列名称,返回其相应的列序号。例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例1:输入: "A"输出: 1示例2:输入: "AB"输出: 28示例3:输入: "ZY"输出: 7..原创 2018-11-09 22:05:43 · 356 阅读 · 0 评论 -
LeetCode算法题111:二叉树的最小深度解析
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.这个题看起来似乎和求最大深度一样,但是其实要更复杂一点,因为求最大深度一定是求到最后一个节...原创 2018-11-04 12:21:34 · 259 阅读 · 0 评论 -
LeetCode算法题112:路径总和解析
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...原创 2018-11-04 13:08:09 · 321 阅读 · 0 评论 -
LeetCode算法题102:二叉树的层次遍历解析
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]遍历二叉树一般用递归,如果是层次遍历一般用队列然后进行迭代,用递归也可以,因此这...原创 2018-11-02 17:21:52 · 362 阅读 · 0 评论 -
LeetCode算法题107:二叉树的层次遍历 II解析
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]之前的102题就是层次遍历,所以这个题和那个题...原创 2018-11-02 17:24:51 · 316 阅读 · 0 评论 -
LeetCode算法题125:验证回文串解析
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明: 本题中,我们将空字符串定义为有效的回文串。示例1:输入: "A man, a plan, a canal: Panama"输出: true示例2:输入: "race a car"输出: false这个题首先的想法是先把所有字符转换成小写,然后取出所有字母数字,然后反向对比,但是这样一般的思路...原创 2018-11-07 09:17:46 · 222 阅读 · 0 评论 -
LeetCode算法题136:只出现一次的数字解析
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4这个题首先可以想到使用栈,因为之前括号匹配题和这个相当像,用栈去匹配相同元素,最后没有匹配到的就返回。这是一个思路,但...原创 2018-11-07 09:38:25 · 527 阅读 · 0 评论 -
LeetCode算法题172:阶乘后的零解析
给定一个整数 n,返回 n! 结果尾数中零的数量。示例1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。这个题不太好想,可能需要记住,出现尾数为0,那么一定是出现了25这样的数对,那就是说出现了多少25就有多少个0,很明显直接找5就好,...原创 2018-11-10 14:06:29 · 396 阅读 · 0 评论