爬楼梯(动态规划/递归)
摘要:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n = 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶 示例 2: 输入:n = 3 输出:3 解释:有三种方法可以爬到楼顶
阅读全文
posted @
2025-01-05 21:57
_月生
阅读(28)
推荐(0) 编辑
划分字母区间(贪心算法)
摘要:给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。 返回一个表示每个字符串片段的长度的列表。 示例 1: 输入:s = "ababcbacadefegdehijhklij" 输出:
阅读全文
posted @
2025-01-05 21:44
_月生
阅读(8)
推荐(0) 编辑
跳跃游戏II(贪心算法)
摘要:给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处: 0 <= j <= nums[i] i + j < n 返回到达 n
阅读全文
posted @
2025-01-04 22:18
_月生
阅读(6)
推荐(0) 编辑
跳跃游戏(贪心算法)
摘要:给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 示例 1: 输入:nums = [2,3,1,1,4] 输出:true 解释:可以先跳 1 步
阅读全文
posted @
2025-01-04 21:36
_月生
阅读(7)
推荐(0) 编辑
买卖股票的最佳时机(贪心算法)
摘要:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0
阅读全文
posted @
2025-01-04 21:19
_月生
阅读(12)
推荐(0) 编辑
数据流的中位数(优先队列)
摘要:中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。 例如 arr = [2,3,4] 的中位数是 3 。 例如 arr = [2,3] 的中位数是 (2 + 3) / 2 = 2.5 。 实现 MedianFinder 类: MedianFinder()
阅读全文
posted @
2025-01-04 15:38
_月生
阅读(9)
推荐(0) 编辑
前k个高频元素(优先队列)
摘要:给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], k = 1 输出: [1] class So
阅读全文
posted @
2025-01-04 14:53
_月生
阅读(3)
推荐(0) 编辑
数组中的第k个最大元素(快速排序)
摘要:给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: [3,2,1,5,6,4], k = 2 输出: 5 示例 2:
阅读全文
posted @
2025-01-03 14:53
_月生
阅读(3)
推荐(0) 编辑
柱状图中最大的矩形(单调递增栈)
摘要:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: 输入:heights = [2,1,5,6,2,3] 输出:10 解释:最大的矩形为图中红色区域,面积为 10 示例 2: 输入: heights =
阅读全文
posted @
2025-01-03 14:35
_月生
阅读(5)
推荐(0) 编辑
每日温度(单调递增栈)
摘要:给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 1: 输入: temperatures = [73,74,75,71,6
阅读全文
posted @
2025-01-03 13:18
_月生
阅读(4)
推荐(0) 编辑
字符串解码(栈)
摘要:给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。 此外,你
阅读全文
posted @
2025-01-03 12:51
_月生
阅读(10)
推荐(0) 编辑
最小栈(栈)
摘要:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top() 获取堆栈顶部的元
阅读全文
posted @
2025-01-03 11:49
_月生
阅读(5)
推荐(0) 编辑
有效的括号(栈)
摘要:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 示例 1: 输入:s = "()" 输出:true 示例 2: 输入
阅读全文
posted @
2025-01-02 14:05
_月生
阅读(4)
推荐(0) 编辑
寻找两个正序数组的中位数(二分查找)
摘要:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (m+n)) 。 示例 1: 输入:nums1 = [1,3], nums2 = [2] 输出:2.00000 解释:合并数组 = [1
阅读全文
posted @
2025-01-02 13:50
_月生
阅读(9)
推荐(0) 编辑
寻找旋转排序数组中的最小值(二分查找)
摘要:已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2] 若旋转 7 次,则可以得到 [0,1,2,4,5,6,7] 注意,数
阅读全文
posted @
2025-01-02 11:00
_月生
阅读(3)
推荐(0) 编辑
搜索旋转排序数组(二分查找)
摘要:整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ...,
阅读全文
posted @
2025-01-02 10:41
_月生
阅读(7)
推荐(0) 编辑
在排序数组中查找元素的第一个和最后一个位置(二分查找)
摘要:给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 1: 输入:nums = [5,7,
阅读全文
posted @
2025-01-02 10:17
_月生
阅读(3)
推荐(0) 编辑
搜索二维矩阵(二分查找)
摘要:给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。 示例 1: 输入:matrix = [[1,3,5,7
阅读全文
posted @
2025-01-01 14:29
_月生
阅读(5)
推荐(0) 编辑
搜索插入位置(二分查找)
摘要:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums = [1,3,5,6], target = 5 输出: 2 示例 2: 输入: nums = [
阅读全文
posted @
2025-01-01 14:20
_月生
阅读(4)
推荐(0) 编辑
N皇后(回溯)
摘要:按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。 每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方
阅读全文
posted @
2025-01-01 14:08
_月生
阅读(5)
推荐(0) 编辑