leetcode
机器学习之禅
推荐系统 / NLP / CV / DataMining
展开
-
刷题 | leetcode 139 单词拆分
给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以由 "leet" 和 "code" 拼接成。示例 2:输入: s = "applepenapple", wordDict =原创 2022-04-26 10:08:18 · 348 阅读 · 0 评论 -
刷题 | leetcode 198 打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。示例 2:输...原创 2022-04-23 10:50:59 · 169 阅读 · 0 评论 -
刷题 | leetcode 152 乘积最大子数组
给你一个整数数组 nums,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个32-位 整数。子数组 是数组的连续子序列。示例 1:输入: nums = [2,3,-2,4]输出: 6解释:子数组 [2,3] 有最大乘积 6。示例 2:输入: nums = [-2,0,-1]输出: 0解释:结果不能为 2, 因为 [-2,-1] 不是子数组。来源:力扣(LeetCode)链接:https...原创 2022-04-22 12:11:18 · 84 阅读 · 0 评论 -
刷题 | leetcode 200.岛屿数量
给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/number-of-islands著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。示例 1:输入:grid = [ ["1","1","1","1","0..原创 2022-04-22 10:04:27 · 65 阅读 · 0 评论 -
刷题 | leetcode 128. 最长连续序列
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。示例 1:输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。示例 2:输入:nums = [0,3,7,2,5,8,4,6,0,1]输出:9来源:力扣(LeetCode)链接:https://leetcode-cn.com/problem..原创 2022-04-21 20:37:21 · 89 阅读 · 0 评论 -
刷题 | leetcode 142 环形链表ii
给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链表。来源:力扣(LeetCode)链接:https://leetcode-cn.com原创 2022-04-20 22:03:37 · 68 阅读 · 0 评论 -
刷题 | leetcode 96 不同的二叉搜索树
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。示例 1:输入:n = 3输出:5解题思路:动态规划,就是需要思考状态转移方程。还有一个叫卡塔兰数的,需要通过推导找出规律class Solution: def numTrees(self, n: int) -> int: dp = [0] * (n+1) dp[0] = 1 .原创 2022-04-20 10:56:56 · 51 阅读 · 0 评论 -
刷题 | leetcode 98 验证二叉搜索树
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/validate-binary-search-tree著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。输入:root = [.原创 2022-04-19 12:13:23 · 49 阅读 · 0 评论 -
刷题 | leetcode 102. 二叉树的层序遍历
给你二叉树的根节点root,返回其节点值的层序遍历。 (即逐层地,从左到右访问所有节点)。示例 1:解题思路:二叉树的广度优先遍历,就是java和python来回切换我这个语法有点混了/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode()...原创 2022-04-18 11:08:26 · 680 阅读 · 0 评论 -
刷题 | leetcode 114 二叉树展开为链表
给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。示例 1:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。.原创 2022-04-18 10:08:21 · 57 阅读 · 0 评论 -
刷题 | leetcode 543 二叉树的直径
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回3, 它的长度是路径 [4,2,1,3] 或者[5,2,1,3]。注意:两结点之间的路径长度是以它们之间边的数目表示。来源:力扣(LeetCode)链接:https://leetcode...原创 2022-04-17 12:12:04 · 63 阅读 · 0 评论 -
刷题 | leetcode 448 找到所有数组中消失的数字
给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。示例 1:输入:nums = [4,3,2,7,8,2,3,1]输出:[5,6]示例 2:输入:nums = [1,1]输出:[2]提示:n == nums.length1 <= n <= 1051 <= nums[i] <= n进阶:你能在不使用额外空间且时间复.原创 2022-04-17 11:19:39 · 43 阅读 · 0 评论 -
刷题 | leetcode 283 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。示例 1:输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]示例 2:输入: nums = [0]输出: [0]提示:1 <= nums.length <= 104-231<= nums[i] <= 231- 1来源:力扣(LeetCode)链接:https...原创 2022-04-17 10:59:22 · 48 阅读 · 0 评论 -
刷题 | leetcode 234 回文链表
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。示例 1:输入:head = [1,2,2,1]输出:true解题思路:把链表放到数组里,或者用递归,不过递归好难想# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = va原创 2022-04-17 10:38:47 · 232 阅读 · 0 评论 -
刷题 | leetcode 206 反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]解题思路:这种题要么递归,要么迭代,就是Python总部通过,不知道啥原因,换成Java一下就过了/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * Lis..原创 2022-04-17 10:15:19 · 791 阅读 · 0 评论 -
刷题 | leetcode 46 全排列
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出:[[1]]提示:1 <= nums.length <= 6-10 <= nums[i] &.原创 2022-04-15 17:29:58 · 102 阅读 · 0 评论 -
刷题 | leetcode 160 相交链表
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保原创 2022-04-15 16:31:39 · 70 阅读 · 0 评论 -
刷题 | leetcode 155 最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int getMin() 获取堆栈中的最小元素。示例 1:输入:["MinStack","push","push","push","getMin","pop","top","getMin".原创 2022-04-15 15:49:58 · 59 阅读 · 0 评论 -
刷题 | leetcode 141 环形链表
给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递。仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其..原创 2022-04-15 15:20:25 · 39 阅读 · 0 评论 -
刷题 | leetcode 72 编辑距离
给你两个单词word1 和word2, 请返回将word1转换成word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例1:输入:word1 = "horse", word2 = "ros"输出:3解释:horse -> rorse (将 'h' 替换为 'r')rorse -> rose (删除 'r')rose -> ros (删除 'e')示例2:输入:word1 = "int...原创 2022-04-15 15:01:09 · 35 阅读 · 0 评论 -
刷题 | leetcode 121 买卖股票的最佳时机
给定一个数组 prices ,它的第i 个元素prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注...原创 2022-04-15 12:02:14 · 40 阅读 · 0 评论 -
刷题 | leetcode 101 对称二叉树
给你一个二叉树的根节点 root , 检查它是否轴对称。示例 1:解题思路:双指针递归# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass So原创 2022-04-15 11:30:55 · 180 阅读 · 0 评论 -
刷题 | leetcode 94 二叉树中序遍历
给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。示例 1:解题思路:基本问题,就是有点忘了,毕竟多少年没写了# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.righ原创 2022-04-15 11:18:38 · 352 阅读 · 0 评论 -
刷题 | leetcode 75 颜色分类
解题思路:最简单的方法就是实现一个冒泡排序,但是这个开销明显比较大,因为题目给了很多限制条件,比如说只有0,1,2,肯定是想考察更高效的思路,比如说使用指针,根据题解,可以采用单指针,两次遍历,第一次把0都移到头部,第二次把2都移到尾部。或者使用双指针单次遍历。冒泡:class Solution: def sortColors(self, nums: List[int]) -> None: """ Do not return anything, m原创 2022-04-15 10:41:18 · 289 阅读 · 0 评论 -
刷题 | leetcode 22 括号生成
数字 n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/generate-parentheses著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解题思.原创 2022-04-15 09:49:26 · 43 阅读 · 0 评论 -
刷题 | leetcode 19 删除链表的倒数第N个节点
给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]解题思路:这个有几种方案,比如说现在用的双指针方案,确实需要一点技巧方面的思考。也可以先遍历一遍确认长度。# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# ..原创 2022-04-14 16:32:20 · 39 阅读 · 0 评论 -
刷题 | leetcode 39 组合总和
给你一个 无重复元素 的整数数组candidates 和一个目标整数target,找出candidates中可以使数字和为目标数target 的 所有不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为target 的不同组合数少于 150 个。示例1:输入:candidates = [2,3,6,7], targe...原创 2022-04-14 15:58:21 · 66 阅读 · 0 评论 -
刷题 | leetcode 104 二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree著作权归领扣网络所有。商业转载..原创 2022-04-14 14:47:28 · 56 阅读 · 0 评论 -
刷题 | leetcode 21 合并两个有序链表
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:解题思路:这个比较简单,就是合并。是刚做过的那个合并k个链表的一个子问题/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val...原创 2022-04-14 14:32:11 · 37 阅读 · 0 评论 -
刷题 | leetcode 17 电话号码的字母组合
给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。示例 1:输入:digits = "23"输出:["ad","ae","af..原创 2022-04-14 14:22:32 · 38 阅读 · 0 评论 -
刷题 | leetcode 23 合并K个升序链表
给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6来源:力扣(LeetCode)链...原创 2022-04-14 11:56:24 · 48 阅读 · 0 评论 -
刷题 | leetcode 338 比特位计数
给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/counting-bits著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。示例 1:输入:n = 2输出:[0,1,1]解释:0 --> 01 --> 12 --> 10原创 2022-04-14 10:23:23 · 70 阅读 · 0 评论 -
刷题 | leetcode 617 合并二叉树
给你两棵二叉树: root1 和 root2 。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。注意: 合并过程必须从两个树的根节点开始。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-b原创 2022-04-14 10:18:59 · 64 阅读 · 0 评论 -
刷题 | leetcode 226 翻转二叉树
给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]解题思路:一个简单的树遍历问题,递归实现# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# s...原创 2022-04-14 09:23:23 · 180 阅读 · 0 评论 -
刷题 | leetcode 461 汉明距离
两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。给你两个整数 x 和 y,计算并返回它们之间的汉明距离。示例 1:输入:x = 1, y = 4输出:2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。示例 2:输入:x = 3, y = 1输出:1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/hamming-d...原创 2022-04-14 08:44:44 · 54 阅读 · 0 评论 -
刷题 | leetcode 62 不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/unique-paths著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解题思路:基础的动态规划题,做了第二道动态规划,废的时间少多了原创 2022-04-13 16:54:11 · 83 阅读 · 0 评论 -
刷题 | leetcode 64 最小路径和
给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例 1:输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。示例 2:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-path-sum著作权归领扣网络所有。商业转载请联系官方授权原创 2022-04-13 16:37:04 · 79 阅读 · 0 评论 -
刷题 | leetcode 49 字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。示例 1:输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]输出: [["bat"],["nat","tan"],["ate","eat","tea"]]示例 2:来源:力扣(LeetCode)链接:https://leetcode-cn.com/proble原创 2022-04-13 15:01:41 · 88 阅读 · 0 评论 -
刷题 | leetcode 739 每日温度
给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指在第 i 天之后,才会有更高的温度。如果气温在这之后都不会升高,请在该位置用 0 来代替。示例 1:输入: temperatures = [73,74,75,71,69,72,76,73]输出:[1,1,4,2,1,1,0,0]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/daily-temperature...原创 2022-04-13 11:40:25 · 293 阅读 · 0 评论 -
刷题 | leetcode 48 旋转图像 Python3实现
给定一个 n×n 的二维矩阵matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/rotate-image著作权归领扣网络所有。...原创 2022-04-12 22:39:54 · 104 阅读 · 1 评论