logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

leetcode_48 旋转图像

本文探讨了如何原地顺时针旋转90度n×n矩阵的三种方法。暴力解法通过新建矩阵实现旋转但不满足空间复杂度要求;转置+反转法先转置矩阵再反转每行,实现原地旋转;原地旋转法推导出四个位置的循环交换关系,通过分层处理实现高效旋转。第三种方法进一步优化为按层处理,减少边界条件判断。文章详细分析了每种方法的实现思路和代码,并提供了清晰的图示说明位置变换规律,帮助理解矩阵旋转的本质。

文章图片
#leetcode#算法#职场和发展
leetcode_239 滑动窗口最大值

本文探讨了滑动窗口最大值问题的三种解法:优先队列、单调队列和分块预处理。优先队列通过维护元素值和下标来获取最大值,时间复杂度O(nlogn)。单调队列利用递减特性高效获取窗口最大值,时间复杂度O(n)。分块预处理方法将数组分为k大小的块,预处理前后缀来快速计算窗口最大值,时间复杂度O(n)。三种方法各有特点,其中单调队列在时间和空间复杂度上表现最优。

文章图片
#算法#数据结构#leetcode
C++11: 拷贝消除与返回值优化(RVO)

摘要 本文探讨了C++中的拷贝消除和返回值优化(RVO/NRVO)机制,通过代码示例展示了编译器如何优化不必要的拷贝构造。未优化时,示例代码可能产生四次拷贝构造调用(两次对象初始化各两次),但开启优化后(如gcc -O0或msvc /Od),这些拷贝可被完全消除。文章还介绍了如何通过编译器选项(如gcc的-fno-elide-constructors)禁用优化来观察原始行为。这些优化是编译器行为而

文章图片
#c++#开发语言
C++17: 类模板参数推导

类模板参数推导(CTAD)是C++17引入的特性,允许编译器自动推导模板类的参数类型。例如std::vector arr = {1,2,3}无需显式指定类型。但CTAD不支持聚合类,需手动添加推导指引如Pair(T,U)->Pair<T,U>。此外,类内非静态成员初始化无法使用CTAD,必须显式指定类型。C++20部分解决了聚合类的问题。该特性简化了模板类使用,但仍存在一些限制需

文章图片
#c++#开发语言
C++开源库使用:nlohmann/json

本文介绍了使用C++开源库nlohmann/json进行JSON解析和序列化的方法。作者通过CMake的FetchContent引入该头文件库,并展示了基本的JSON文件解析操作。重点说明了如何为自定义结构体avl_test_case和枚举类型avl_op_tp实现JSON序列化功能:既可以使用NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE宏简化操作,也可以通过特化adl_s

文章图片
#c++#json#mfc
Linux IO模型:阻塞IO、非阻塞IO、IO多路复用、信号驱动IO、异步IO

本文介绍了五种I/O模型的特点和实现方式:1)阻塞I/O模型简单直接但会阻塞进程;2)非阻塞I/O通过轮询避免阻塞但消耗CPU;3)I/O多路复用单线程监听多个文件描述符;4)信号驱动I/O通过信号通知数据到达;5)异步I/O完全不阻塞进程。文章通过示意图和代码示例(包括信号处理和POSIX AIO)详细说明了每种模型的实现机制,分析了各自的优缺点,为理解不同I/O模型的工作方式提供了清晰的参考。

文章图片
#linux#服务器
华为OD 处理器

本文实现了一个处理器亲和性调度算法,根据任务需求数量和可用处理器编号输出符合优先级的处理器组合。 算法首先将处理器分为两组(0-3和4-7),然后根据任务申请数量num(1/2/4/8)确定优先级规则: num=1时优先级顺序:剩余4个>2个>3个>1个 num=2时优先级顺序:剩余2个>4个>3个 num=4时必须剩余4个 num=8时需要全部8个处理器可用 使用回

文章图片
#算法
到底了