自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 区间最佳问题

摘要:该问题要求用最少总时间满足多个学生的陪玩需求,每个学生有特定空闲区间和最低陪玩时长。解决方案采用贪心算法:1)按学生空闲结束时间排序;2)从每个学生结束时间往前安排陪玩,最大化时间重叠。算法时间复杂度为O(nlogn)(排序)加O(n*L)(L为最晚结束时间),空间复杂度O(L)。类似力扣2589题"完成所有任务的最少时间",核心思路是通过排序和贪心策略最大化时间重叠。优化方向可考虑使用栈和二分查找来提升效率。

2025-11-21 17:10:52 347

原创 快慢指针妙解链表环问题

判断单链表是否有环的(也叫龟兔赛跑算法),是效率最优的方案(时间 O (n)、空间 O (1)),核心逻辑是:通过两个速度不同的指针遍历链表,若链表有环,快指针终将追上慢指针;若无环,快指针会先走到链表末尾(指向 null)。

2025-11-20 20:22:49 780 1

原创 经典同步互斥问题解析

系统中有一组生产者进程和消费者进程,生产者每次生产一个产品到缓存区,消费者每次从缓存区中取出一个产品并消费。生产者与消费者公享一个缓存区(初始为空,大小为n),只有当缓存区不满时生产者才生产产品,只有当缓存区不空时消费者才消费产品。缓存区是一个临界资源,各进程必须互斥访问。

2025-07-29 15:44:11 325

原创 Python + 模拟退火

模拟退火算法是一种受金属退火过程启发的全局优化方法,通过模拟高温冷却过程寻找最优解。其核心步骤包括:设定初始温度、生成邻域解、基于Metropolis准则接受新解、逐步降温直至收敛。该算法在组合优化、机器学习等领域有广泛应用,具有全局搜索能力强、实现简单的优点,但也存在计算时间长、参数调节困难等缺点。本文通过Python代码演示了模拟退火在函数优化、平方根计算和旅行商问题中的实际应用,展示了算法从初始解逐步优化至全局最优解的过程,并提供了详细的温度变化和收敛过程可视化分析。

2025-07-15 10:39:47 1020

原创 探索子序列的奥秘:从基础概念到实际应用

从定义上讲,子序列是从给定序列中通过删除某些元素(也可以不删除任何元素),但不改变剩余元素相对顺序而得到的新序列。简单来说,假如有一个序列 [1, 3, 4, 5, 2] , [1, 4, 2] 就是它的一个子序列,因为它是通过选取原序列的第 1、3、5 个元素得到的;[3, 5] 同样是子序列,选取的是原序列的第 2、4 个元素。特别地,空序列也是任何序列的子序列,原序列本身也是自己的子序列。​子序列与子数组(连续子序列)有着明显区别。

2025-06-29 12:02:06 694

原创 全排列算法解析与实现

本文介绍了全排列的定义及其实现方法。全排列是指将n个不同元素按顺序排列的所有可能方式。文章重点讲解了三种实现方法:回溯法(递归实现)、交换法(回溯变种)和字典序法(迭代实现),并提供了相应代码示例。其中回溯法通过"选择-递归-回溯"逻辑生成排列,交换法采用元素交换策略,字典序法则基于字典序规则迭代生成。最后列举了全排列在组合优化、密码学、排序算法、游戏开发和算法测试等领域的应用场景。这些方法为解决各类排列组合问题提供了有效工具。

2025-06-27 13:13:06 966

原创 快速幂算法:高效计算大数幂的秘诀

快速幂是一种高效计算幂次的算法,通过将指数二进制分解,将时间复杂度从O(n)降至O(logn)。其核心思想是利用指数二进制位处理,在每次迭代中将底数平方并根据二进制位决定是否累乘。应用场景包括递推数列、大数模幂运算(如a^b mod p)等。算法实现通过循环分解指数,逐位判断并进行条件乘法运算,显著提升计算效率,特别适合处理超大指数(如10^18)的幂运算。

2025-06-17 18:58:40 307

原创 力扣每日一题

力扣刷题!!!

2025-05-31 14:51:26 415

原创 差分数组:高效处理区间更新的秘密武器(力扣3355.零数组变换I)

假设我们有一个数组。

2025-05-20 14:04:02 1070

原创 贪心算法(灵神提单)

分享丨【题单】贪心算法(基本贪心策略/反悔/区间/字典序/数学/思维/构造) - 力扣(LeetCode)

2025-03-02 13:51:15 470

原创 滑动窗口(灵神提单)

通过两个指针(通常是左指针和右指针)来定义一个“窗口”,这个窗口可以是当前考虑的子数组或子字符串。

2025-02-28 18:03:41 657

原创 算法技巧类(自用)

文章摘要:本文系统介绍了位运算的多种应用技巧,包括字符串操作(大小写切换)、移位运算(乘除替代)、按位或/异或操作(查找唯一元素、交换数值)、二进制组合生成(Gosper's Hack)等。重点讲解了位运算在算法题中的实际应用,如LeetCode题目解析,并提供了具体代码示例。同时介绍了位运算的高效特性和注意事项,如符号位处理、溢出问题等。文章还涉及二进制转换、背包问题优化等进阶技巧,以及clamp函数的范围控制方法。

2025-02-28 18:03:19 620

原创 前缀和 + hash表

核心其实就是判断 当前 sum 是否在之前存在过(通过hash表来实现) 然后根据题意来判断 结果的更新方式。4、hash表:key => sum , value => 当前前缀和的个数(下标)5、比较当前sum和之前的sum(hash[sum])的关系。子数组是数组中元素的连续非空序列。2、根据题意设置hash[0]3、计算前缀和sum。

2024-10-27 16:26:01 408

原创 C++学习笔记(自用)

是 C++ 标准库中的一个算法,它被用来重新排列序列中的元素,生成该序列的下一个(字典序的)排列。是一个字符串函数,用于获取指定位置开始的指定长度的子字符串, substr() 函数返回一个新的字符串,表示从原字符串中提取出的子字符串。它的功能类似于逻辑运算中的“与”操作,即所有元素都为真时,返回真;.begin() 和 .end() 是 C++ 中用于获取容器(比如字符串、数组、向量等)的起始和结束迭代器的方法。,这两个成员函数对于std::string类型来说是等效的,它们都返回字符串中字符的数量,

2024-10-13 16:42:31 924

原创 2096. 从二叉树一个节点到另一个节点每一步的方向

给你一棵的根节点root,这棵二叉树总共有n个节点。每个节点的值为1到n中的一个整数,且互不相同。给你一个整数startValue,表示起点节点s的值,和另一个不同的整数destValue,表示终点节点t的值。请找到从节点s到节点t的,并以字符串的形式返回每一步的方向。每一步用字母'L''R'和'U''L'表示从一个节点前往它的节点。'R'表示从一个节点前往它的节点。'U'表示从一个节点前往它的节点。请你返回从s到t每一步的方向。

2024-09-23 20:47:53 826

原创 前序中序画树、后序中序画树、前序后序画树

说白了前序、中序、后序,就是看你在遍历树的时候是选择将根放在前、中、后的哪个位置像前序就是将根放在左右子树前面。

2024-09-22 16:39:17 1284 1

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除