数据结构与算法&leetcode
文章平均质量分 77
数据结构与算法&leetcode
Tipriest_
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++ 的 ranges 和 Python 的 bisect 在二分查找中的应用与实现
本文对比了C++20的std::ranges和Python的bisect模块在二分查找中的应用。C++20通过ranges::binary_search、lower_bound和upper_bound等函数提供了类型安全的二分查找,返回迭代器;Python的bisect模块则通过bisect_left和bisect_right返回索引位置,并支持直接插入元素。两者都能高效处理有序数据,但C++性能更优,而Python更易用。文章提供了完整的代码示例,展示了如何在两种语言中实现二分查找及其边界查询功能。原创 2025-12-24 16:40:24 · 430 阅读 · 0 评论 -
旋转矩阵,齐次变换矩阵,欧拉角,四元数等相互转换的常用代码C++ Python
本文提供了一个基于C++(Eigen)和Python(NumPy/SciPy)的姿态转换工具库,统一了机器人领域常用的坐标系和旋转表示方法之间的转换。核心内容包括:1)采用右手坐标系和Z-Y-X欧拉角顺序;2)四元数统一表示为(w,x,y,z);3)提供旋转矩阵、欧拉角、四元数和齐次变换矩阵之间的两两转换函数。C++实现基于Eigen库,包含从欧拉角到旋转矩阵、四元数到旋转矩阵等常用转换接口,所有函数都遵循统一的约定,可直接集成到项目中作为长期可复用的姿态计算库。原创 2025-12-15 20:24:36 · 1143 阅读 · 0 评论 -
旋转矩阵与欧拉角转换数学公式与代码详解
本文介绍了欧拉角与四元数之间的转换方法,重点针对Z-Y-X顺序(yaw-pitch-roll)的航空/机器人学常用约定。首先通过数学推导给出了欧拉角转四元数的公式,并详细说明了四元数转欧拉角的计算过程,特别处理了万向节锁情况下的数值稳定性问题。随后提供了C++和Python的实现代码示例,确保不依赖第三方库即可使用。所有转换均采用右手坐标系,输入输出单位为弧度,适用于需要精确姿态表示的应用场景。原创 2025-12-15 19:44:21 · 966 阅读 · 0 评论 -
[leetcode]对顶堆,对数时间添加元素,常数时间取中位数(或者第K大的数)
摘要:对顶堆是一种高效的数据结构组合,通过大顶堆和小顶堆分别存储数据流中小于和大于中位数的元素,能在 O(log N) 时间插入数据,O(1) 时间查询中位数。每次插入后通过堆顶元素交换维护两个堆的平衡,保证中位数始终位于堆顶或两堆顶平均值。适用于动态数据流的中位数查询和滑动窗口中位数问题。原创 2025-11-04 11:31:24 · 1214 阅读 · 0 评论 -
C++ Iterator 使用方法详解
C++迭代器是访问容器元素的通用工具,提供统一方式遍历不同结构的容器(如vector、list等)。迭代器分为五类:输入、输出、前向、双向和随机访问迭代器,功能依次增强。通过iterator、const_iterator等类型别名使用,支持解引用、移动等操作。迭代器可与STL算法结合,C++11后可用auto和范围for简化代码。使用时需注意迭代器失效和越界问题。迭代器是STL核心,能提高代码效率和可维护性。原创 2025-09-02 15:38:01 · 1172 阅读 · 0 评论 -
stdexcept介绍与使用指南
C++ 的 <stdexcept> 头文件提供了一套标准异常类(如 out_of_range、invalid_argument 等),但这些异常需要手动抛出,不会自动应用于原生数组或容器的 operator[] 越界访问。它们的实际用途体现在: 标准库容器:vector::at() 等安全方法在越界时会主动抛出 std::out_of_range; 自定义代码:开发者可手动抛出这些标准异常类(如 if (index >= size) throw out_of_range(...)),使错误原创 2025-09-01 21:42:38 · 1027 阅读 · 0 评论 -
C++ multiset数据结构的使用情况说明
摘要: multiset(C++ STL)适用于需要动态维护有序集合且允许重复元素的场景。其特性包括自动排序(O(log n)操作)、支持重复值、迭代器稳定。典型应用包括: 动态数据(如游戏排行榜、股票价格)的实时排序 统计元素出现次数(如投票系统) 支持删除任意元素的优先队列 高效区间查询(如分数段统计) ✅ 关键区别: 需有序+重复 → multiset 需有序+去重 → set 仅统计频率 → unordered_multiset原创 2025-09-01 17:22:54 · 828 阅读 · 0 评论 -
求一个整数x的平方根到指定精度[C++][Python]
本文介绍了三种计算非负整数平方根的算法:袖珍计算器法(利用指数和对数公式)、二分查找法(逐步逼近整数解)和牛顿迭代法(快速收敛到高精度解)。其中袖珍计算器法和牛顿法可以扩展到指定精度的小数解,而二分法仅能获得整数解。每种方法都给出了C++和Python实现代码,适用于不同精度需求场景。文章还提供了Leetcode官方题解参考链接,并说明如何修改代码来获取指定精度的平方根结果。原创 2025-08-29 15:45:35 · 685 阅读 · 0 评论 -
一个很巧妙的回溯写法解析(from leetcode灵神)
状态定义清晰:用两个参数就完整地描述了当前递归的状态。决策简单明确:对于每个元素nums[i],只有“选”和“不选”两个分支,通过两个递归调用完美地体现了这一点。代码极其精简:它没有显式地去存储每个子集,而是在递归的“归途”中,当一个子集构建完成时(到达 base case),立刻计算其“或”值并与目标比较,从而节省了大量空间。希望这个详细的解释能帮助你理解这个巧妙的算法!原创 2025-07-28 20:18:52 · 718 阅读 · 0 评论 -
[数据结构与算法] leetcode提升速度与性能的一些小点[c++]
【代码】[数据结构与算法] leetcode提升速度与性能的一些小点[c++]原创 2025-07-11 14:39:01 · 135 阅读 · 0 评论 -
[数据结构与算法] 优先队列 | 最小堆 C++
当存储自定义类型(如struct或class)时,你需要告诉优先队列如何比较它们。方法一:重载运算符(用于大顶堆)int id;// 重载 < 运算符,priority 越大,优先级越高// top() 将返回 priority 最大的 Node,即 {3, 20}方法二:提供自定义比较器(更灵活)如果你不想或不能修改结构体定义,或者需要多种排序方式,可以提供一个自定义的比较函数对象(Functor)。int id;// 自定义比较器结构体。原创 2025-07-10 22:52:59 · 1331 阅读 · 0 评论 -
[leetcode] C++ 并查集模板
特性推荐模板 (路径压缩 + 按大小合并)基础模板 (仅路径压缩)时间复杂度find和unite操作接近O(1)(严格来说是 O(α(n)))find和unite操作最坏为 O(log n)空间复杂度O(n)O(n)适用场景所有场景,特别是数据规模大或性能要求高时学习理解,或数据规模非常小建议:直接记住并使用第一个推荐模板。它已经成为了解决并查集问题的标准写法,可以应对 LeetCode 上绝大多数相关题目。原创 2025-07-06 11:27:31 · 931 阅读 · 0 评论 -
leetcode需要背下来的程序&语法糖 [Python][C++][更新中]
本文提供了Python与C++常用函数对照速查表,涵盖对象创建、类型转换、容器操作、数学计算、字符串处理、进制转换、文件操作等多个方面。包含字典/集合创建、类型判断、列表操作、排序搜索、字符串格式化等核心功能的实现对比,并附有C++中整数转二进制字符串的实现示例。同时介绍了int32/64等基本数据类型的取值范围,以及科学计数法输出常量极值的C++代码示例。该速查表可作为Python开发者学习C++或C++开发者参考Python实现的快速索引工具。原创 2025-05-29 23:38:18 · 416 阅读 · 0 评论 -
语法糖介绍(C++ Python)
语法糖(Syntactic Sugar)是编程语言中为了提升代码可读性和简洁性而设计的语法结构。它不改变语言的功能,但能让代码更易写和理解。:语法糖虽方便,但过度使用可能降低代码清晰度。例如,多层嵌套的列表推导式可能难以维护,而滥用运算符重载可能导致逻辑不直观。原创 2025-05-29 20:50:58 · 1043 阅读 · 0 评论 -
【C++20新特性】ranges::sort()使用方法,优势,注意点
使用Lambda// 按模3的余数排序});原创 2025-05-22 15:52:30 · 1732 阅读 · 0 评论 -
leetcode报错原因总结&需要背下来的程序片 [更新中]
C++13的string类型在使用.back()方法的时候不会考虑string是否为空,如果string为空的话会有越界错误。原创 2025-05-18 11:23:38 · 492 阅读 · 0 评论 -
emplace_back和push_back的区别
push_back参数对象(左值/右值)构造参数列表性能可能涉及拷贝/移动直接构造,更高效适用已有对象就地构造新对象优先使用以提升性能,但需注意参数类型和构造逻辑的匹配。原创 2025-05-16 10:51:42 · 843 阅读 · 0 评论
分享