
菜鸟的LeetCode刷题记录
人工智障1025
这个作者很懒,什么都没留下…
展开
-
LeetCode刷题记录——面试题(旋转矩阵)
题目描述给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?示例 1:给定 matrix =[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]]示例 2:给定 matrix =[[ 5, 1, 9,11],[ 2, 4, 8,10],[13, 3, 6, 7],[15,14,12,16]],原创 2020-07-29 19:08:25 · 302 阅读 · 0 评论 -
LeetCode刷题记录——第56题(合并两个有序数组)
题目描述给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。思路分析核心思路:按照每个子列表中第0个元素进行排序,以示例1为例,比较3和2的大小,如果3大于2说明原创 2020-07-29 18:34:06 · 250 阅读 · 0 评论 -
LeetCode刷题——第一题 (两数之和)
1.两数之和题目描述思路代码实现可能出现的问题题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15] ,target = 9因为 nums[0] + nums[1] = 2 +...原创 2018-12-13 20:00:54 · 212 阅读 · 0 评论 -
LeetCode刷题——第七题(整数反转)
7.整数反转题目描述思路代码实现题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231−2^{31}...原创 2018-12-13 20:22:27 · 210 阅读 · 0 评论 -
LeetCode刷题——第九题(回文数)
9.回文数题目描述思路代码示例题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例3:输入: 10输出: false解释: 从右向左读, 为...原创 2018-12-14 00:25:02 · 152 阅读 · 0 评论 -
LeetCode刷题——第十三题(罗马数字转整数)
13.罗马数字转整数题目描述思路代码示例题目描述罗马数字包含以下七种字符: III,VVV,XXX,LLL,CCC,DDD 和 MMM。例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是...原创 2018-12-14 01:18:19 · 277 阅读 · 0 评论 -
LeetCode刷题——第十四题(最长公共前缀)
14.最长公共前缀题目描述思路代码实现题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: " "解释: 输入不存在公共前缀。思路利用双指针,记录两个东西:iii第...原创 2018-12-14 10:01:06 · 194 阅读 · 0 评论 -
LeetCode刷题记录——第二十题(有效的括号)
20.有效的括号题目描述思路分析代码实现题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例1:输入: “()”输出: true示例2:输入: “(]”输出: false思路分析确定括号是否匹配...原创 2018-12-14 13:48:58 · 212 阅读 · 0 评论 -
LeetCode刷题记录——第122题(买卖股票的最佳时机二)
题目描述给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这...原创 2018-12-20 09:41:11 · 574 阅读 · 0 评论 -
LeetCode刷题记录——第125题(验证回文串)
题目描述给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false思路分析思想很简单,将字符串转换为list,然后验证倒序和正序是否一致代码实...原创 2018-12-20 09:51:37 · 205 阅读 · 0 评论 -
LeetCode刷题记录——第167题(两数之和二)
题目描述给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15],...原创 2018-12-20 10:19:54 · 185 阅读 · 0 评论 -
LeetCode刷题记录——第172题(阶乘后的0)
题目描述给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。思路分析比较巧妙的思路:出现0的时候,因子里面一定会含有2和5,2的出现次数非常多,所以决定出现几个0的关键...原创 2018-12-21 11:05:05 · 152 阅读 · 0 评论 -
LeetCode刷题记录——第二十六题(删除排序数组的重复项)
26.删除排序数组的重复项题目描述思路分析代码实现题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需...原创 2018-12-17 10:51:12 · 158 阅读 · 0 评论 -
LeetCode刷题记录——第二十七题(移除元素)
27.移除元素题目描述思路代码实现题目描述给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新...原创 2018-12-17 11:15:35 · 608 阅读 · 0 评论 -
LeetCode刷题记录——第二十八题(实现strStr())
28.实现strStr()题目描述代码实现题目描述实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:示例 2:输...原创 2018-12-17 14:00:44 · 201 阅读 · 0 评论 -
LeetCode刷题记录——第198题(打家劫舍)
题目描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后...原创 2018-12-28 09:53:43 · 287 阅读 · 0 评论 -
LeetCode刷题记录——第205题(同构字符串)
题目描述给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = “egg”, t = “add”输出: true示例 2:输入: s = “foo”, t = “bar”输出:...原创 2018-12-28 11:07:37 · 289 阅读 · 0 评论 -
LeetCode刷题记录——第三十五题(搜索插入位置)
题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 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输出...原创 2018-12-17 22:10:33 · 132 阅读 · 0 评论 -
LeetCode刷题记录——第五十三题(最大子序和)
题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。思路分析第一项值赋给maxsum后,若后一项的值为负数,则sum为0maxsum的任务是:记录最大子序列和代码实现class So...原创 2018-12-17 22:55:19 · 137 阅读 · 0 评论 -
LeetCode刷题记录———第五十八题(最后一个单词长度)
题目描述给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: “Hello World”输出: 5思路分析要返回最后一个单词的长度,很容易就想到了用切片的思想,并且需要将字符串用split方法变为列表代码实现class Solution: ...原创 2018-12-18 09:06:39 · 136 阅读 · 0 评论 -
LeetCode刷题记录——第66题 (加一)
题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。...原创 2018-12-18 09:32:07 · 190 阅读 · 0 评论 -
LeetCode刷题记录——第六十九题(x的平方根)
题目描述实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。思路分析本质上还是分治法的思想代码实现class Soluti...原创 2018-12-18 09:52:34 · 173 阅读 · 0 评论 -
LeetCode刷题记录——第217题(存在重复元素)
题目描述给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true思路分析判断是否存在重复元素,...原创 2018-12-29 11:40:52 · 151 阅读 · 0 评论 -
LeetCode刷题记录——第219题(存在重复元素II)
题目描述给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 iii 和 jjj,使得 nums [i] = nums [j],并且iii 和 jjj 的差的绝对值最大为 k。示例 1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true示例 3:输入: num...原创 2018-12-29 16:30:23 · 187 阅读 · 0 评论 -
LeetCode刷题记录——第258题(各位相加)
题目描述给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38输出: 2解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。思路分析很明显,需要用到整除和求余运算(// ; %)判断的条件为:当数为一位数时,停止运算,while循环就很符合这个条件代码示例class Solution...原创 2018-12-29 16:38:43 · 149 阅读 · 0 评论 -
LeetCode刷题记录——第七十题(爬楼梯)
题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶...原创 2018-12-19 09:22:58 · 202 阅读 · 0 评论 -
LeetCode刷题记录——第八十八题(合并两个有序数组)
题目描述给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3n...原创 2018-12-19 09:45:25 · 188 阅读 · 0 评论 -
LeetCode刷题记录——第121题(买卖股票的最佳时机)
题目描述给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注...原创 2018-12-19 10:07:21 · 343 阅读 · 0 评论 -
LeetCode刷题记录——第263题(丑数)
题目描述编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数 2, 3, 5 的正整数。示例 1:输入: 6输出: true解释: 6 = 2 × 3示例 2:输入: 8输出: true解释: 8 = 2 × 2 × 2示例 3:输入: 14输出: false解释: 14 不是丑数,因为它包含了另外一个质因数 7。说明:1 是丑数。输入不会超过 ...原创 2018-12-30 22:50:47 · 135 阅读 · 0 评论 -
LeetCode刷题记录——第268题(缺失数字)
题目描述给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8思路分析利用n个数序列的求和公式,求出0-n序列的总和利用sum函数,求出列表的和两者之差即缺失的数字代码实现class Solution...原创 2019-01-02 09:13:45 · 204 阅读 · 0 评论 -
LeetCode刷题记录——第279题(第一个错误的版本)
题目描述你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中...原创 2019-01-02 09:28:23 · 149 阅读 · 0 评论 -
LeetCode刷题记录——第283题(移动零)
题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。思路分析对于nums中不为零的数,需要的操作是:将其从第0位开始,顺序排列,所以利用for循环遍历列表,将不为0的元素放入对应的位置,这个思...原创 2019-01-02 09:37:37 · 165 阅读 · 0 评论 -
LeetCode刷题记录——第290题(单词模式)
题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。思路分析代码示例...原创 2019-01-03 09:16:15 · 184 阅读 · 0 评论 -
LeetCode刷题记录——第293题(Nim游戏)
题目描述你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛;因为无论你拿走 1 块、2 块 还是 3 块石头...原创 2019-01-03 09:23:10 · 1028 阅读 · 0 评论 -
LeetCode刷题记录——第303题(区域和检索 - 数组不可变)
题目描述给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。示例:给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()sumRange(0, 2) -> 1sumRange(2, 5) -> -1sumRange(0, 5) -> -3说明:你可以假设...原创 2019-01-03 09:33:14 · 201 阅读 · 0 评论 -
LeetCode刷题记录——第345题(反转字符串中元音字母)
题目描述编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入: “hello”输出: “holle”示例 2:输入: “leetcode”输出: “leotcede”思路分析将所有元音字母放在一个列表里,方便后续用if语句判定s中的元素是否在元音列表中str转换为list,方便用索引交换字母利用while循环,判定标准是front<end,...原创 2019-01-09 10:26:43 · 299 阅读 · 0 评论 -
LeetCode刷题记录——第374题(猜数字大小)
题目描述我们正在玩一个猜数字游戏。 游戏规则如下:我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。每次你猜错了,我会告诉你这个数字是大了还是小了。你调用一个预先定义好的接口 guess(int num),它会返回 3 个可能的结果(-1,1 或 0):-1 : 我的数字比较小1 : 我的数字比较大0 : 恭喜!你猜对了!示例 :输入: n = 10, pick ...原创 2019-01-12 18:05:10 · 548 阅读 · 0 评论 -
LeetCode刷题记录——第383题(赎金信)
题目描述给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串ransom能不能由第二个字符串magazines里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。)注意:你可以假设两个字符串均只含有小写字母。canConstruct(“a”, ...原创 2019-01-12 18:24:04 · 341 阅读 · 1 评论 -
LeetCode刷题记录——第387题(字符串中的第一个唯一字符)
题目描述给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = “leetcode”返回 0.s = “loveleetcode”,返回 2.思路分析关键问题在于,如何找到第一个不重复字符。可以新建一个字典,用key表示对应s中的字符,value表示出现的次数,如果第一次出现,则往后新建key,如果不是第一次出现,value += ...原创 2019-01-12 18:36:58 · 163 阅读 · 0 评论 -
LeetCode刷题记录——第389题(找不同)
题目描述给定两个字符串 s 和 t,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例:输入:s = “abcd”t = “abcde”输出:e解释:‘e’ 是那个被添加的字母。思路分析目的是找出t中被添加的那个字符,思路是建立一个新的字典,key为s中对应的字母,value为出现的次数。第二...原创 2019-01-13 13:59:59 · 160 阅读 · 0 评论