leetcode
老爸是程序员
能写出很诗一样的代码,也能细心的带好娃
展开
-
[leetcode]35. 搜索插入位置
个人博客:https://javaniuniu.com/难度:简单本题涉及算法: 二分查找思路: 二分查找 暴力 目标值插入数组类似题型:题目 35. 搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4.原创 2020-06-20 18:07:52 · 328 阅读 · 0 评论 -
[leetcode]238. 除自身以外数组的乘积
个人博客:https://javaniuniu.com/难度:中等本题涉及算法:思路:乘积 = 左边乘积 * 右边乘积类似题型:题目 238. 除自身以外数组的乘积给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘.原创 2020-06-04 13:07:00 · 174 阅读 · 0 评论 -
[leetcode]28. 实现 strStr()
个人博客:https://javaniuniu.com/难度:简单本题涉及算法:思路:滑动窗口类似题型:3. 无重复字符的最长子串1461. 检查一个字符串是否包含所有长度为 K 的二进制子串1438. 绝对差不超过限制的最长连续子数组题目 28. 实现 strStr()实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1.原创 2020-06-03 23:04:38 · 154 阅读 · 0 评论 -
[leetcode]27. 移除元素
个人博客:https://javaniuniu.com/难度:简单本题涉及算法:思路:拷贝覆盖 倒序遍历类似题型:题目 27. 移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 .原创 2020-06-03 12:19:09 · 192 阅读 · 0 评论 -
[leetcode]26. 删除排序数组中的重复项
个人博客:https://javaniuniu.com/难度:简单本题涉及算法:思路:遍历类似题型:题目 26. 删除排序数组中的重复项给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1)O(1)O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。.原创 2020-06-02 14:43:20 · 236 阅读 · 0 评论 -
[leetcode]面试题64. 求1+2+…+n
个人博客:https://javaniuniu.com/难度:中等本题涉及算法:递归思路:递归类似题型:题目 面试题64. 求1+2+…+n求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3输出: 6示例 2:输入: n = 9输出: 45限制:1 <= n <= 10000方法一 递归解题思路:题目其实指明了要用 递归复杂度.原创 2020-06-02 12:52:38 · 171 阅读 · 0 评论 -
[leetcode]5409. 检查一个字符串是否包含所有长度为 K 的二进制子串
个人博客:https://javaniuniu.com/难度:中等本题涉及算法: 滑动窗口思路:滑动窗口类似题型:题目5409. 检查一个字符串是否包含所有长度为 K 的二进制子串给你一个二进制字符串 s 和一个整数 k 。如果所有长度为 k 的二进制字符串都是 s 的子串,请返回 True ,否则请返回 False 。示例 1:输入:s = "00110110", k = 2输出:true解释:长度为 2 的二进制串包括 "00","01","10" 和 "11"。它们分别是 .原创 2020-05-31 00:06:12 · 317 阅读 · 0 评论 -
[leetcode]5408. 通过翻转子数组使两个数组相等
个人博客:https://javaniuniu.com/难度:简单本题涉及算法:思路:zip类似题型:14. 最长公共前缀题目 5408. 通过翻转子数组使两个数组相等给你两个长度相同的整数数组 target 和 arr 。每一步中,你可以选择 arr 的任意 非空子数组 并将它翻转。你可以执行此过程任意次。如果你能让 arr 变得与 target 相同,返回 True;否则,返回 False 。示例 1:输入:target = [1,2,3,4], arr = [2,4,.原创 2020-05-31 00:05:15 · 196 阅读 · 0 评论 -
[leetcode]17. 电话号码的字母组合
个人博客:https://javaniuniu.com/难度:中等本题涉及算法: 回溯算法思路: 回溯算法类似题型:题目 17. 电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答.原创 2020-05-21 11:12:45 · 225 阅读 · 0 评论 -
[leetcode]16. 最接近的三数之和
个人博客:https://javaniuniu.com/难度:简单本题涉及算法: 数组遍历 双指针思路:类似题型:15. 三数之和题目 16. 最接近的三数之和给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1.原创 2020-05-20 11:14:50 · 128 阅读 · 0 评论 -
[leetcode]15. 三数之和
个人博客:https://javaniuniu.com/难度:中等本题涉及算法: 数组遍历思路:数组遍历类似题型:题目 15. 三数之和给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, .原创 2020-05-19 17:21:25 · 130 阅读 · 0 评论 -
[leetcode]14. 最长公共前缀
个人博客:https://javaniuniu.com/难度:简单本题涉及算法:思路:zip类似题型:题目 14. 最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。方法一 zip合并.原创 2020-05-18 17:48:04 · 256 阅读 · 1 评论 -
[leetcode]5413. 重新排列句子中的单词
个人博客:https://javaniuniu.com/难度:简单本题涉及算法:思路:lambda类似题型:题目 5413. 重新排列句子中的单词「句子」是一个用空格分隔单词的字符串。给你一个满足下述格式的句子 text :句子的首字母大写text 中的每个单词都用单个空格分隔。请你重新排列 text 中的单词,使所有单词按其长度的升序排列。如果两个单词的长度相同,则保留其在原句子中的相对顺序。请同样按上述格式返回新的句子。示例 1:输入:text = "Leetcode .原创 2020-05-17 20:11:31 · 521 阅读 · 0 评论 -
[leetcode]5412. 在既定时间做作业的学生人数
个人博客:https://javaniuniu.com/难度:简单本题涉及算法:思路:zip类似题型:题目 5412. 在既定时间做作业的学生人数给你两个整数数组 startTime(开始时间)和 endTime(结束时间),并指定一个整数 queryTime 作为查询时间。已知,第 i 名学生在 startTime[i] 时开始写作业并于 endTime[i] 时完成作业。请返回在查询时间 queryTime 时正在做作业的学生人数。形式上,返回能够使 queryTime 处于区间 .原创 2020-05-17 20:04:02 · 258 阅读 · 0 评论 -
[leetcode]5414. 收藏清单
个人博客:https://javaniuniu.com/难度:中等本题涉及算法: 交集思路:交集类似题型:题目 5414. 收藏清单给你一个数组 favoriteCompanies ,其中 favoriteCompanies[i] 是第 i 名用户收藏的公司清单 (下标从 0 开始)。请找出不是其他任何人收藏的公司清单的子集的收藏清单,并返回该清单下标。下标需要按升序排列。示例 1:输入:favoriteCompanies = [["leetcode","google","faceb.原创 2020-05-17 19:51:57 · 161 阅读 · 0 评论 -
[leetcode]5398. 统计二叉树中好节点的数目
个人博客:https://javaniuniu.com/难度:简单本题涉及算法: 深度优先搜索思路:类似题型:题目 5398. 统计二叉树中好节点的数目给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。「好节点」X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。示例 1:输入:root = [3,1,4,3,null,1,5]输出:4解释:图中蓝色节点为好节点。根节点 (3) 永远是个好节点。节点 4 -> (3,4) 是路.原创 2020-05-17 01:52:22 · 281 阅读 · 0 评论 -
[leetcode]5397. 最简分数
个人博客:https://javaniuniu.com/难度:中等本题涉及算法:最大公约数 欧几里得法思路:最大公约数 欧几里得法类似题型:水壶问题题目 5397. 最简分数给你一个整数 n ,请你返回所有 0 到 1 之间(不包括 0 和 1)满足分母小于等于 n 的 最简 分数 。分数可以以 任意 顺序返回。示例 1:输入:n = 2输出:["1/2"]解释:"1/2" 是唯一一个分母小于等于 2 的最简分数。示例 2:输入:n = 3输出:["1/2",.原创 2020-05-17 01:40:00 · 320 阅读 · 0 评论 -
[leetcode]13. 罗马数字转整数
个人博客:https://javaniuniu.com/难度:简单本题涉及算法: 哈希表思路:类似题型:题目 13. 罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2.原创 2020-05-16 22:06:01 · 143 阅读 · 0 评论 -
[leetcode]12. 整数转罗马数字
个人博客:https://javaniuniu.com/难度:中等本题涉及算法: 这道题告诉又一次告诉我,题解先做出来,不管方法多么的简单思路:类似题型:题目 12. 整数转罗马数字罗马数字包含以下七种字符: I, V, X, L,C,D和 M。字符 数值I 1V 5X 10L 50C 100D 500M .原创 2020-05-16 19:23:02 · 116 阅读 · 0 评论 -
[leetcode]8. 字符串转换整数 (atoi)
个人博客:https://javaniuniu.com/难度:中等本题涉及算法:思路:类似题型:题目 8. 字符串转换整数 (atoi)请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字.原创 2020-05-15 22:43:57 · 118 阅读 · 0 评论 -
[leetcode]560. 和为K的子数组
个人博客:https://javaniuniu.com/难度:中等本题涉及算法: 前缀和 哈希表思路:前缀和 哈希表类似题型:题目 560. 和为K的子数组给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [.原创 2020-05-15 14:12:12 · 263 阅读 · 0 评论 -
[leetcode]6. Z 字形变换
个人博客:https://javaniuniu.com/难度:简单本题涉及算法: 题解模版思路:类似题型:6. Z 字形变换将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 LEETCODEISHIRING 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进.原创 2020-05-14 22:02:34 · 163 阅读 · 0 评论 -
[leetcode]2. 两数相加
个人博客:https://javaniuniu.com/难度:中等本题涉及算法: 链表思路:链表类似题型:445. 两数相加 II题目 2. 两数相加给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 ->.原创 2020-05-13 15:08:41 · 134 阅读 · 0 评论 -
[leetcode]50. Pow(x, n)
个人博客:https://javaniuniu.com/难度:中等本题涉及算法: 递归 折半计算思路: 递归 折半计算类似题型:50. 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/22 = 1/4 = 0.25说明:-.原创 2020-05-11 23:49:03 · 167 阅读 · 0 评论 -
[leetcode]1. 两数之和
个人博客:https://javaniuniu.com/难度:简单本题涉及算法: 前缀和 暴力 哈希表思路: 前缀和 暴力 哈希表类似题型:题目 1. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] .原创 2020-05-11 23:47:08 · 458 阅读 · 0 评论 -
[leetcode]23. 合并K个排序链表
个人博客:https://javaniuniu.com/难度:困难本题涉及算法: 优先队列思路:优先队列类似题型:23. 合并K个排序链表合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6方法一 优先队列解题思路通过题目和示例,可清楚的了解到,其实就是 .原创 2020-05-09 22:32:57 · 110 阅读 · 0 评论 -
[leetcode]213. 打家劫舍 II
个人博客:https://javaniuniu.com/难度:中等本题涉及算法: 动态规划思路:动态规划类似题型:198. 打家劫舍题目 213. 打家劫舍 II你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下,能够偷.原创 2020-05-09 16:40:50 · 151 阅读 · 0 评论 -
[leetcode]198. 打家劫舍
个人博客:https://javaniuniu.com/难度:简单本题涉及算法: 动态规划思路:动态规划类似题型:题目 198. 打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 .原创 2020-05-09 14:32:17 · 155 阅读 · 0 评论 -
[leetcode]9. 回文数
个人博客:https://javaniuniu.com/难度:简单本题涉及算法: 算数思路:类似题型:题目 9. 回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此...原创 2020-05-08 11:56:21 · 113 阅读 · 0 评论 -
[leetcode]206. 反转链表
个人博客:https://javaniuniu.com/难度:简单本题涉及算法: 迭代思路:迭代类似题型:题目 206. 反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?...原创 2020-05-07 18:19:59 · 221 阅读 · 0 评论 -
[leetcode]1438. 绝对差不超过限制的最长连续子数组
个人博客:https://javaniuniu.com/难度:中等本题涉及算法: 滑动窗口思路:滑动窗口类似题型:3. 无重复字符的最长子串5393. 可获得的最大点数题目 1438. 绝对差不超过限制的最长连续子数组给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 lim...原创 2020-05-06 00:44:34 · 1184 阅读 · 0 评论 -
[leetcode]98. 验证二叉搜索树
个人博客:https://javaniuniu.com/难度:中等本题涉及算法: 中序遍历思路:类似题型:知识点参考: 二叉树(前序,中序,后序,层序)遍历递归与循环的python实现题目 98. 验证二叉搜索树给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的...原创 2020-05-05 13:41:08 · 179 阅读 · 0 评论 -
[leetcode]1111. 有效括号的嵌套深度
个人博客:https://javaniuniu.com/难度:简单本题涉及算法:哈希表 暴力思路:哈希表 暴力类似题型:题目 20. 有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: ...原创 2020-05-04 17:33:30 · 90 阅读 · 0 评论 -
[leetcode]1111. 有效括号的嵌套深度
个人博客:https://javaniuniu.com/难度:简单本题涉及算法:哈希表 暴力思路:哈希表 暴力类似题型:题目 1111. 有效括号的嵌套深度给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1...原创 2020-05-04 16:14:08 · 226 阅读 · 0 评论 -
[leetcode]53. 最大子序和
个人博客:https://javaniuniu.com/难度:简单本题涉及算法:贪心 动态规划思路:贪心 动态规划类似题型:题目 53. 最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,...原创 2020-05-03 20:06:21 · 95 阅读 · 0 评论 -
[leetcode]152. 乘积最大子数组
个人博客:https://javaniuniu.com/难度:`中等本题涉及算法:贪心 动态规划思路:贪心 动态规划类似题型:题目 152. 乘积最大子数组给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字)。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2...原创 2020-05-03 20:03:51 · 234 阅读 · 0 评论 -
[leetcode]169. 多数元素
个人博客:https://javaniuniu.com/难度:简单本题涉及算法:排序 哈希表 摩尔投票法思路思路:排序 哈希表 摩尔投票法思路类似题型:229. 求众数 II题目 169. 多数元素给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 n/2 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例示例 1:...原创 2020-05-02 20:15:02 · 232 阅读 · 0 评论 -
[leetcode]229. 求众数 II
个人博客:https://javaniuniu.com/难度:中等本题涉及算法:摩尔投票法思路:摩尔投票法类似题型:169. 多数元素题目 229. 求众数 II给定一个大小为 n 的数组,找出其中所有出现超过 n/3 次的元素。说明: 要求算法的时间复杂度为 O(n)O(n)O(n),空间复杂度为 O(1)O(1)O(1)。示例 1:输入: [3,2,3]输出:...原创 2020-05-02 20:11:23 · 186 阅读 · 0 评论 -
[leetcode]3. 无重复字符的最长子串
个人博客:https://javaniuniu.com/难度:`中等本题涉及算法:滑动窗口思路:滑动窗口类似题型:5393. 可获得的最大点数题目 3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3解释 : 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2...原创 2020-05-02 11:57:12 · 170 阅读 · 0 评论 -
[leetcode]面试题 17.16. 按摩师
个人博客:https://javaniuniu.com/难度:简单本题涉及算法:动态规划 递归思路:动态规划 递归类似题型:题目 面试题 17.16. 按摩师一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。示例示例...原创 2020-05-02 00:17:04 · 408 阅读 · 1 评论