Kennem's Blog
  • 🏠主页
  • 🔍搜索
  • 📚文章
  • ⏱时间轴
  • 🔖标签
  • 🗂️分类
  • 🙋🏻‍♂️关于
主页 » 🧩 标签

LeetCode笔记

LeetCode每日一题(202502)

每日一题(202502) 0201 81. 搜索旋转排序数组 II 题目大意 给定一个旋转排序数组 nums 和一个目标值 target,判断目标值是否存在于数组中。需要尽可能减少操作步骤。 解题思路 旋转数组特点:旋转后数组分为两部分,其中一部分是有序的。 使用二分查找: 判断左半部分是否有序,如果有序,判断目标值是否在这部分。 否则,判断右半部分是否有序,并进行类似操作。 处理重复元素:如果 nums[left] == nums[mid] == nums[right],无法确定哪部分有序,直接移动指针。 代码实现 class Solution: def search(self, nums: List[int], target: int) -> bool: if not nums: return False n = len(nums) if n == 1: return nums[0] == target l, r = 0, n - 1 while l <= r: mid = l + r >> 1 if nums[mid] == target: return True if nums[l] == nums[mid] and nums[mid] == nums[r]: l += 1 r -= 1 elif nums[l] <= nums[mid]: if nums[l] <= target < nums[mid]: r = mid - 1 else: l = mid + 1 else: if nums[mid] < target <= nums[n - 1]: l = mid + 1 else: r = mid - 1 return False 0202 MarsCode 每日一题 红色格子染色方案数计算 1. 题目大意 有一个长度为 n 的格子,一部分已染红,剩余格子未染色。通过特定的规则(红色格子可以染色左右邻居),我们需要计算将所有格子染红的不同染色顺序。最终返回结果对 10^9 + 7 取模。 ...

2025-02-02 · 2 分钟 · 730 字 · updated: 2025-02-02 · ShowGuan

LeetCode每日一题(202501)

每日一题(202501) 0124 2944. 购买水果需要的最少金币数 1. 题目大意 给定一个整数数组 prices,其中 prices[i] 表示购买第 i 个水果所需的金币数。每购买一个水果后,可以根据一定的规则免费获得后续水果。规则是:购买第 i 个水果后,可以免费获得下标在 [i+1, i+i] 范围内的水果。你的目标是通过选择购买一些水果,最小化总花费,同时确保获得所有水果。 ...

2025-01-25 · 3 分钟 · 1298 字 · updated: 2025-01-25 · ShowGuan

LeetCode Hot 100 精练🥸(2)

LeetCode Hot 100 精练🥸(2) 记忆中的东西一定会消退,真正留下的才是学到的,一定要及时回顾。 215. 数组中的第K个最大元素 题目大意: 给定一个整数数组 nums 和一个整数 k,要求返回数组中排序后的第 k 个最大的元素。你必须设计一个时间复杂度为 O(n) 的算法来解决此问题。 ...

2024-12-08 · 5 分钟 · 2176 字 · updated: 2024-12-08 · ShowGuan

LeetCode每日一题(202405)

LeetCode每日一题(2405) 1235. 规划兼职工作 题目大意:给定n份兼职工作,每份工作都有开始时间、结束时间和报酬。任务是选择一些工作,使得在不重叠的情况下能够获得最大报酬。 实现思路:首先对工作按照结束时间进行排序,然后使用动态规划来求解最大报酬。在动态规划的过程中,维护一个数组f,其中f[i]表示在考虑前i个工作时可以获得的最大报酬。遍历每个工作,对于第i个工作,找到在其开始时间之前且结束时间最接近的工作j,然后更新f[i]为f[j] + 第i个工作的报酬。最终返回f[n]即为所求的最大报酬。 ...

2024-05-01 · 4 分钟 · 1695 字 · updated: 2024-05-07 · ShowGuan

LeetCode笔记

LeetCode笔记 目标:2500分 HOT100 301. 删除无效的括号 题目大意: 给你一个由若干括号和字母组成的字符串 s ,删除最小数量的无效括号,使得输入的字符串有效。 返回所有可能的结果。答案可以按 任意顺序 返回。 ...

2024-04-17 · 26 分钟 · 12788 字 · updated: 2024-10-06 · ShowGuan

LeetCode Hot 100 精练🥸(1)

LeetCode Hot 100 精练🥸(1) 记忆中的东西一定会消退,真正留下的才是学到的,一定要及时回顾。 11. 盛最多水的容器 题目大意:给定一个长度为n的整数数组height,数组中的每个元素代表一条垂直线的高度。找出其中的两条线,使得它们与x轴构成的容器可以容纳最多的水。 ...

2024-04-17 · 22 分钟 · 10769 字 · updated: 2024-12-08 · ShowGuan

LeetCode每日一题(202404)

每日一题(202404) 2009. 使数组连续的最少操作数 题意:给定一个可能有重复元素的数组,可以修改数组中值为任意其他值,问使数组连续的最小操作数。 思路:由于只能改动元素,所以最后的元素个数不变,去重后,枚举每个值作为左端点,则右端点为nums[i]+n-1, 用双指针计算在区间内的元素个数即为可以保留的数字,其他数字修改元素值填满空隙即可。 ...

2024-04-17 · 12 分钟 · 5983 字 · updated: 2024-04-22 · ShowGuan

LeetCode每日一题(202404)

每日一题(202404) 2009. 使数组连续的最少操作数 题意:给定一个可能有重复元素的数组,可以修改数组中值为任意其他值,问使数组连续的最小操作数。 思路:由于只能改动元素,所以最后的元素个数不变,去重后,枚举每个值作为左端点,则右端点为nums[i]+n-1, 用双指针计算在区间内的元素个数即为可以保留的数字,其他数字修改元素值填满空隙即可。 ...

2024-04-17 · 11 分钟 · 5131 字 · updated: 2024-04-22 · ShowGuan

剑指Offer

剑指Offer 数据流中的中位数 用两个堆模拟, 左边大顶堆,右边小顶堆,则两个堆顶是最中间的数字。 添加数字时: 如果输入的是第奇数个(比如第一个,则N初始化为0,插入后N为1,代表一共有一个数字),则先插入大顶堆,然后把堆顶插入小顶堆。保证小顶堆的任意一个值都比大顶堆大。 同样,如果输入的是第偶数个(第二个),则先插入小顶堆,然后将小顶堆最小值插入大顶堆。同样是保证小顶堆的任意一个值都比大顶堆大。 至于先插入哪一个堆是没有关系的,只要保证交替插入不同的堆即可,并且要确保边界问题(比如在奇数个元素的的中位数, 只有一个数据时应返回先插入的堆顶值, 否则堆为空会报错)。 ...

2024-04-17 · 3 分钟 · 1359 字 · updated: 2024-04-22 · ShowGuan
© 2025 Kennem's Blog · Powered by Hugo & PaperMod
👤 Visitors: 👀 Views: