随笔 - 112  文章 - 0  评论 - 0  阅读 - 1312
01 2025 档案
两数之和(哈希表)
摘要:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], 阅读全文
posted @ 2025-01-11 11:37 _月生 阅读(7) 评论(0) 推荐(0) 编辑
寻找重复数(二分查找)
摘要:给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。 你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。 示例 1: 输入 阅读全文
posted @ 2025-01-11 11:17 _月生 阅读(10) 评论(0) 推荐(0) 编辑
下一个排列
摘要:整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典 阅读全文
posted @ 2025-01-10 21:43 _月生 阅读(2) 评论(0) 推荐(0) 编辑
颜色分类(单指针)
摘要:给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sort 函数的情况下解决这个问题。 示例 1: 输入:nums = [2 阅读全文
posted @ 2025-01-10 20:42 _月生 阅读(2) 评论(0) 推荐(0) 编辑
多数元素(排序)
摘要:给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums = [3,2,3] 输出:3 示例 2: 输入:nums = [2,2,1,1,1,2,2] 阅读全文
posted @ 2025-01-10 20:11 _月生 阅读(2) 评论(0) 推荐(0) 编辑
只出现一次的数字(异或运算)
摘要:给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。 示例 1 : 输入:nums = [2,2,1] 输出:1 示例 2 : 输入:nums = [4, 阅读全文
posted @ 2025-01-10 13:44 _月生 阅读(5) 评论(0) 推荐(0) 编辑
编辑距离(二维动态规划)
摘要:给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1: 输入:word1 = "horse", word2 = "ros" 输出:3 解释: horse - 阅读全文
posted @ 2025-01-09 21:25 _月生 阅读(8) 评论(0) 推荐(0) 编辑
最长公共子序列(二维动态规划)
摘要:给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。 例如,"ace" 是 "a 阅读全文
posted @ 2025-01-09 20:46 _月生 阅读(6) 评论(0) 推荐(0) 编辑
最长回文串(二维动态规划)
摘要:给你一个字符串 s,找到 s 中最长的 回文子串。 示例 1: 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 示例 2: 输入:s = "cbbd" 输出:"bb" class Solution { public: string longestPalind 阅读全文
posted @ 2025-01-09 16:56 _月生 阅读(4) 评论(0) 推荐(0) 编辑
最小路径和(二维动态规划)
摘要:给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 1: 输入:grid = [[1,3,1],[1,5,1],[4,2,1]] 输出:7 解释:因为路径 1→3→1→1→1 的总和最小。 阅读全文
posted @ 2025-01-09 15:42 _月生 阅读(6) 评论(0) 推荐(0) 编辑
不同路径(二维动态规划)
摘要:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? 示例 1: 输入:m = 3, n = 7 输出:28 示例 2: 输入:m 阅读全文
posted @ 2025-01-09 15:09 _月生 阅读(3) 评论(0) 推荐(0) 编辑
最长有效括号(动态规划)
摘要:给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 示例 1: 输入:s = "(()" 输出:2 解释:最长有效括号子串是 "()" 示例 2: 输入:s = ")()())" 输出:4 解释:最长有效括号子串是 "()()" 示例 3: 输入:s = " 阅读全文
posted @ 2025-01-08 21:47 _月生 阅读(9) 评论(0) 推荐(0) 编辑
分割等和子集(动态规划)
摘要:给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums = [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5, 5] 和 [11] 。 示例 2: 输入:nums = [1,2,3,5 阅读全文
posted @ 2025-01-08 20:35 _月生 阅读(12) 评论(0) 推荐(0) 编辑
乘积最大子数组(动态规划)
摘要:给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 测试用例的答案是一个 32-位 整数。 示例 1: 输入: nums = [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2: 输入 阅读全文
posted @ 2025-01-08 20:09 _月生 阅读(4) 评论(0) 推荐(0) 编辑
最长递增子序列(动态规划)
摘要:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的 子序列。 示例 1: 输入:nums = [10,9,2,5,3,7,101,1 阅读全文
posted @ 2025-01-08 19:54 _月生 阅读(5) 评论(0) 推荐(0) 编辑
单词拆分(动态规划)
摘要:给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例 1: 输入: s = "leetcode", wordDict = ["leet", 阅读全文
posted @ 2025-01-08 18:48 _月生 阅读(14) 评论(0) 推荐(0) 编辑
零钱兑换(动态规划)
摘要:给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的。 示例 1: 输入:coins = [1, 2, 5], amou 阅读全文
posted @ 2025-01-08 18:14 _月生 阅读(8) 评论(0) 推荐(0) 编辑
完全平方数(动态规划)
摘要:给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。 示例 1: 输入:n = 12 输出:3 解释:12 = 4 + 4 + 4 示 阅读全文
posted @ 2025-01-08 17:56 _月生 阅读(11) 评论(0) 推荐(0) 编辑
打家劫舍(动态规划)
摘要:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例 阅读全文
posted @ 2025-01-07 21:38 _月生 阅读(5) 评论(0) 推荐(0) 编辑
杨辉三角(动态规划)
摘要:给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows = 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRow 阅读全文
posted @ 2025-01-07 11:03 _月生 阅读(8) 评论(0) 推荐(0) 编辑
爬楼梯(动态规划/递归)
摘要:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n = 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶 示例 2: 输入:n = 3 输出:3 解释:有三种方法可以爬到楼顶 阅读全文
posted @ 2025-01-05 21:57 _月生 阅读(23) 评论(0) 推荐(0) 编辑
划分字母区间(贪心算法)
摘要:给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。 返回一个表示每个字符串片段的长度的列表。 示例 1: 输入:s = "ababcbacadefegdehijhklij" 输出: 阅读全文
posted @ 2025-01-05 21:44 _月生 阅读(7) 评论(0) 推荐(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) 推荐(0) 编辑
跳跃游戏(贪心算法)
摘要:给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 示例 1: 输入:nums = [2,3,1,1,4] 输出:true 解释:可以先跳 1 步 阅读全文
posted @ 2025-01-04 21:36 _月生 阅读(6) 评论(0) 推荐(0) 编辑
买卖股票的最佳时机(贪心算法)
摘要:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0  阅读全文
posted @ 2025-01-04 21:19 _月生 阅读(11) 评论(0) 推荐(0) 编辑
数据流的中位数(优先队列)
摘要:中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。 例如 arr = [2,3,4] 的中位数是 3 。 例如 arr = [2,3] 的中位数是 (2 + 3) / 2 = 2.5 。 实现 MedianFinder 类: MedianFinder() 阅读全文
posted @ 2025-01-04 15:38 _月生 阅读(6) 评论(0) 推荐(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) 推荐(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 _月生 阅读(2) 评论(0) 推荐(0) 编辑
柱状图中最大的矩形(单调递增栈)
摘要:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: 输入:heights = [2,1,5,6,2,3] 输出:10 解释:最大的矩形为图中红色区域,面积为 10 示例 2: 输入: heights = 阅读全文
posted @ 2025-01-03 14:35 _月生 阅读(5) 评论(0) 推荐(0) 编辑
每日温度(单调递增栈)
摘要:给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 1: 输入: temperatures = [73,74,75,71,6 阅读全文
posted @ 2025-01-03 13:18 _月生 阅读(3) 评论(0) 推荐(0) 编辑
字符串解码(栈)
摘要:给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。 此外,你 阅读全文
posted @ 2025-01-03 12:51 _月生 阅读(10) 评论(0) 推荐(0) 编辑
最小栈(栈)
摘要:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top() 获取堆栈顶部的元 阅读全文
posted @ 2025-01-03 11:49 _月生 阅读(4) 评论(0) 推荐(0) 编辑
有效的括号(栈)
摘要:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 示例 1: 输入:s = "()" 输出:true 示例 2: 输入 阅读全文
posted @ 2025-01-02 14:05 _月生 阅读(3) 评论(0) 推荐(0) 编辑
寻找两个正序数组的中位数(二分查找)
摘要:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (m+n)) 。 示例 1: 输入:nums1 = [1,3], nums2 = [2] 输出:2.00000 解释:合并数组 = [1 阅读全文
posted @ 2025-01-02 13:50 _月生 阅读(6) 评论(0) 推荐(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) 推荐(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 _月生 阅读(5) 评论(0) 推荐(0) 编辑
在排序数组中查找元素的第一个和最后一个位置(二分查找)
摘要:给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 1: 输入:nums = [5,7, 阅读全文
posted @ 2025-01-02 10:17 _月生 阅读(3) 评论(0) 推荐(0) 编辑
搜索二维矩阵(二分查找)
摘要:给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。 示例 1: 输入:matrix = [[1,3,5,7 阅读全文
posted @ 2025-01-01 14:29 _月生 阅读(4) 评论(0) 推荐(0) 编辑
搜索插入位置(二分查找)
摘要:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums = [1,3,5,6], target = 5 输出: 2 示例 2: 输入: nums = [ 阅读全文
posted @ 2025-01-01 14:20 _月生 阅读(4) 评论(0) 推荐(0) 编辑
N皇后(回溯)
摘要:按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。 每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方 阅读全文
posted @ 2025-01-01 14:08 _月生 阅读(5) 评论(0) 推荐(0) 编辑
分割回文串(回溯)
摘要:给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。 示例 1: 输入:s = "aab" 输出:[["a","a","b"],["aa","b"]] 示例 2: 输入:s = "a" 输出:[["a"]] class Solution { publi 阅读全文
posted @ 2025-01-01 11:21 _月生 阅读(2) 评论(0) 推荐(0) 编辑
单词搜索(回溯)
摘要:给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示 阅读全文
posted @ 2025-01-01 10:56 _月生 阅读(4) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示