- 博客(25)
- 收藏
- 关注
原创 LeetCode刷题--零钱兑换
LeetCode刷题笔记25322. 零钱兑换代码518. 零钱兑换 II代码322. 零钱兑换链接[链接](给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的示例 1:输入:coins = [1, 2, 5], amount = 11输出:3解释:11 = 5 + 5 + 1示例 2:输入:coins = [2], amount = 3输出
2021-04-09 13:37:26
198
原创 LeetCode刷题--反转链表
LeetCode刷题笔记24剑指 Offer 24. 反转链表题目描述思路代码剑指 Offer 24. 反转链表链接题目描述剑指 Offer 24. 反转链表定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000思路在遍历链表时,将当前节点的 next指针改为
2021-03-24 10:16:08
212
1
原创 LeetCode刷题--只出现一次的数字
LeetCode刷题笔记23136. 只出现一次的数字题目描述思路代码异或运算的性质136. 只出现一次的数字链接题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4思路容易想到利用字典或者数组进行存储计数,但是都利用了额外的存储空间。因此考虑异或代码Pyth
2021-03-09 11:19:11
263
原创 LeetCode每日一题(2.6)
LeetCode每日一题1423. 可获得的最大点数题目描述代码1423. 可获得的最大点数链接题目描述几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。你的点数就是你拿到手中的所有卡牌的点数之和。给你一个整数数组 cardPoints 和整数 k,请你返回可以获得的最大点数。示例 1:输入:cardPoints = [1,2,3,4,5,6,1], k = 3输出:12
2021-02-06 11:18:11
277
原创 LeetCode每日一题(2.5)
LeetCode每日一题1208. 尽可能使字符串相等题目描述思路代码1208. 尽可能使字符串相等链接题目描述给你两个长度相同的字符串,s 和 t。将 s 中的第 i 个字符变到 t 中的第 i 个字符需要 |s[i] - t[i]| 的开销(开销可能为 0),也就是两个字符的 ASCII 码值的差的绝对值。用于变更字符串的最大预算是 maxCost。在转化字符串时,总开销应当小于等于该预算,这也意味着字符串的转化可能是不完全的。如果你可以将 s 的子字符串转化为它在 t 中对应的子字符串,
2021-02-05 11:12:47
363
原创 LeetCode刷题21--二叉搜索树与双向链表、二叉搜索树序列
LeetCode刷题笔记21剑指 Offer 36. 二叉搜索树与双向链表题目描述思路代码面试题 04.09. 二叉搜索树序列题目描述思路剑指 Offer 36. 二叉搜索树与双向链表链接题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。思路参考 https://leetcode-cn.com/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/solut
2021-02-04 10:43:06
101
原创 LeetCode刷题20--二叉树的序列化与反序列化
LeetCode刷题笔记20297. 二叉树的序列化与反序列化题目描述代码297. 二叉树的序列化与反序列化链接题目描述序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。代码前序遍历# Defi
2021-02-03 23:03:41
288
原创 LeetCode刷题19--数据流的中位数、滑动窗口中位数
LeetCode刷题笔记19295. 数据流的中位数题目描述暴力解法480. 滑动窗口中位数题目描述代码(暴力解法)295. 数据流的中位数链接题目描述中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前
2021-02-03 17:56:34
178
原创 LeetCode刷题18--部分二叉树题目
LeetCode刷题笔记18面试题 04.05. 合法二叉搜索树题目描述思路代码1448. 统计二叉树中好节点的数目题目描述思路代码993. 二叉树的堂兄弟节点题目描述思路代码面试题 04.05. 合法二叉搜索树链接题目描述实现一个函数,检查一棵二叉树是否为二叉搜索树。思路分别判断左右子树是否满足情况即可,左子树的任何一个节点不能大于root.val,并且每个左子树节点不能大于父节点的值,所以判断每个子节点是否符合条件,用max_val和min_val控制代码Python# Definit
2021-02-03 15:21:03
181
原创 LeetCode刷题17--二叉搜索树的后序遍历序列
LeetCode刷题笔记17剑指 Offer 33. 二叉搜索树的后序遍历序列题目描述思路代码剑指 Offer 33. 二叉搜索树的后序遍历序列链接题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。提示:数组长度 <= 1000思路数组长度小于等于2的情况下均返回True其他情况:根节点为数组最后一个数,接着找数组中第一个大于root.val的数的索引,由此分出左右子树,如果左
2021-02-02 22:52:46
143
原创 LeetCode刷题15-- 乘积小于K的子数组
LeetCode刷题笔记15713. 乘积小于K的子数组题目描述思路代码713. 乘积小于K的子数组链接题目描述给定一个正整数数组 nums。找出该数组内乘积小于 k 的连续的子数组的个数。示例 1:输入: nums = [10,5,2,6], k = 100输出: 8解释: 8个乘积小于100的子数组分别为: [10], [5], [2], [6], [10,5], [5,2], [2,6], [5,2,6]。需要注意的是 [10,5,2] 并不是乘积小于100的子数组。说明:0
2021-02-01 12:17:54
82
原创 LeetCode刷题14-- 二分查找
LeetCode刷题笔记14704. 二分查找题目描述代码704. 二分查找链接题目描述给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输
2021-02-01 10:32:41
144
原创 LeetCode刷题12--分割等和子集、零钱兑换 II
LeetCode刷题笔记12416. 分割等和子集题目描述思路代码416. 分割等和子集链接题目描述给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100数组的大小不会超过 200示例 1:输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11].示例 2:输入: [1, 2, 3, 5]输出: false解释: 数组不能分割成两个元素和相等的子集.
2021-01-29 22:15:42
167
1
原创 LeetCode刷题11--部分二叉树问题汇总
LeetCode刷题笔记11部分二叉树问题汇总144. 二叉树的前序遍历题目描述代码94. 二叉树的中序遍历代码145. 二叉树的后序遍历代码102. 二叉树的层序遍历题目描述代码226. 翻转二叉树题目描述思路:递归代码951. 翻转等价二叉树题目描述思路:代码101. 对称二叉树题目描述思路:递归代码669. 修剪二叉搜索树题目描述思路:代码部分二叉树问题汇总144. 二叉树的前序遍历链接题目描述给你二叉树的根节点 root ,返回它节点值的 前序 遍历。代码递归方式# Definiti
2021-01-29 17:25:46
235
原创 LeetCode每日一题(1.28)
LeetCode每日一题724. 寻找数组的中心索引题目描述代码724. 寻找数组的中心索引链接题目描述给定一个整数类型的数组 nums,请编写一个能够返回数组 “中心索引” 的方法。我们是这样定义数组 中心索引 的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:索引 3 (nums[
2021-01-29 16:46:44
51
原创 LeetCode刷题10--从前序与中序遍历序列构造二叉树、从中序与后序遍历序列构造二叉树
LeetCode刷题笔记10105. 从前序与中序遍历序列构造二叉树题目描述思路:代码106. 从中序与后序遍历序列构造二叉树题目描述代码105. 从前序与中序遍历序列构造二叉树链接题目描述根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。思路:前序遍历的数组第一个元素即为root的值,根据中序遍历的输入划分左子树和右子树,然后递归即可代码# Definition for a binary tree node.# class TreeNode(object)
2021-01-28 16:23:30
100
原创 LeetCode刷题9--二叉树中的最大路径和
LeetCode刷题笔记9124. 二叉树中的最大路径和题目描述代码124. 二叉树中的最大路径和链接题目描述路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。代码python# Definition for a binary tree node.# class TreeNode(object):# def __
2021-01-28 16:17:28
164
原创 LeetCode刷题8--对称二叉树
LeetCode刷题笔记8101. 对称二叉树题目描述代码101. 对称二叉树链接题目描述给定一个二叉树,检查它是否是镜像对称的。代码python递归解法# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left
2021-01-28 15:52:39
98
原创 LeetCode刷题7--Nim游戏
LeetCode刷题笔记7292. Nim 游戏题目描述思路:代码292. Nim 游戏链接题目描述你和你的朋友,两个人一起玩 Nim 游戏:桌子上有一堆石头。你们轮流进行自己的回合,你作为先手。每一回合,轮到的人拿掉 1 - 3 块石头。拿掉最后一块石头的人就是获胜者。假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 true;否则,返回 false 。示例 1:输入:n = 4输出:false解释:如果堆中有
2021-01-28 15:14:51
589
原创 LeetCode刷题6--验证二叉搜索树
LeetCode刷题笔记6验证二叉搜索树题目描述代码验证二叉搜索树链接题目描述给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。代码pythonclass Solution(object): def isValidBST(self, root): """ :type root: TreeNode
2021-01-28 14:58:17
178
原创 LeetCode刷题5--相同的树、二叉搜索树的第k大节点
LeetCode刷题笔记5相同的树题目描述代码剑指 Offer 54. 二叉搜索树的第k大节点题目描述思路代码相同的树链接题目描述给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。代码# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x#
2021-01-28 14:06:40
83
原创 LeetCode刷题4--环形链表
LeetCode刷题笔记4环形链表题目描述思路142. 环形链表 II题目描述思路代码环形链表链接题目描述给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。思
2021-01-28 13:38:26
147
原创 LeetCode刷题3--爬楼梯
LeetCode刷题笔记3爬楼梯题目描述思路代码爬楼梯链接题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶思路思路:f[0]=0f[1]=
2021-01-28 13:20:57
79
原创 LeetCode刷题笔记1--两数之和
LeetCode刷题笔记1. 两数之和题目描述代码1. 两数之和题目描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。链接:link.代码class Solution: def twoSum(self, nums,target): if len(nums)<2:
2021-01-28 12:23:43
93
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人