排序算法
[[排序算法对比]][[堆排序]][[希尔排序]]
1 熟悉每种排序的步骤2 区分:
选择排序
每次选择最小的和本次迭代最左边交换
冒泡排序
每次两两比较交换,直到本次迭代最右边,最大的元素会被移到最右边
插入排序
依次迭代插入到前面已经排好的元素
3 稳定性等排序性质,适合范围4 最差、最好、平均时间复杂度,空间复杂度5 手撕步骤希尔排序是插入排序的优化
所有递归都可以用非递归(迭代)的方式实现理论上所有递归算法都可以用非递归(迭代)的方式实现。这是因为递归本质上利用了函数调用栈,而非递归实现则通过显式地维护一个栈数据结构来模拟递归过程。
将外循环条件加入内循环条件,这样当外部条件不满足,也可以直接跳出两重循环
基数排序[[基数排序]]
自适应排序与非自适应排序[[自适应排序与非自适应排序]]
非原地排序 (Out-of-Place Sorting)和原地排序定义非原地排序(Out-of-Place Sorting)是指在排序过程中需要额外的存储空间(通常与原数组大小相当或更大)来辅助排序的算法。这些算法不会直接在原始数据上进行修改,而是借助额外的数据结构(如数组、 ...
前端
[[Vue-1]][[前端知识补充]][[react以及ant]]
数据结构与算法
序 - Hello 算法
其它[[计算机网络]][[SQL]][[numpy]][[刷题笔记]][[语言相关]][[k8s]]
数据结构[[Python内置库的数据结构]][[红黑树:自平衡的二叉搜索树]][[回溯算法]]
第一梯队(核心基础)
数组/链表
所有数据结构的底层基础,随机访问(数组) vs 快速增删(链表)。
哈希表(Hash Table)
高频用于快速查找(O(1)),如字典、缓存等。
字符串处理
涉及匹配、子串、反转等,是实际开发中最常见的数据形式。
第二梯队(算法基石)
栈(Stack) & 队列(Queue)
栈用于递归、括号匹配;队列用于BFS、任务调度。
堆(Heap)/优先队列(Priority Queue)[[堆]]
解决Top-K问题、Dijkstra算法等。
二叉树(Binary Tree)
递归思维的训练,衍生出二叉搜索树、AVL树、红黑树、B树等。
图(Graph)[[图]]
表示网络关系,但实际编码中直接使用的场景较少(更多考察算法如BFS/DFS)。
第三梯队(高级优化)
...
刷题笔记
vector获取长度:函数,vector.size()
不能返回两个值,除非使用pair之类的
1234567891011121314151617181920class Solution {public: int removeElement(vector<int>& nums, int val) { int i=0; int j=nums.size(); int swap_place = 0; int k=0; while(i<=j){ if(nums[i]==val){ swap_place=nums[j]; nums[j] = nums[i]; nums[i] = swap_place; k++; } i++; j--; ...
特征图
Feature Map(特征图) 是深度学习(尤其是卷积神经网络 CNN)中的一个核心概念,指通过卷积操作从输入数据中提取出的特征表示。它可以看作是对输入数据的某一层次的特征的可视化或数学表达。
1. 通俗理解
类比:假设你有一张照片(输入图像),通过不同的“滤镜”(卷积核)处理后,会得到多张“特效图”(特征图),每张特效图突出原始照片的某些特征(如边缘、纹理、颜色等)。
作用:特征图记录了输入数据中某些特定模式(如线条、形状、物体部分)的响应强度。
2. 技术定义
数学表达:特征图是输入数据(如前一层特征图或原始图像)与卷积核(kernel)进行卷积运算后得到的输出。计算公式(以2D卷积为例):$$\text{Feature Map}(i,j) = \sum_{m}\sum_{n} \text{Input}(i+m, j+n) \cdot \text{Kernel}(m,n)$$
通道与深度:
单个卷积核生成一个单通道特征图。
多个卷积核(如 C_out 个)会生成多通道特征图(shape为 (C_out, H_out, W_out))。
3. 特征图的常见操作
激 ...
C++ 面试知识点
1.unsigned long2.sizeof ,strlen, char a=””,char a[],char a*,char a = “str” 字符序列3.指针数组作为参数4.const修饰返回值5.静态成员函数允许访问的6.派生类允许访问的protected\private\public\static
语言相关
[[Python 和 C++ 中的舍入问题]]
C++[[变长数组VLA]][[unsigned long]][[sizeof vs strlen,std的string、C 风格字符串、字符数组]][[类]][[对象销毁]][[C++中哪些容器的删改操作会导致指针失效?]]
python[[Python函数式编程、装饰器与闭包]][[repr和str]]
环境管理[[UV]][[miniforge]]
C++中哪些容器的删改操作会导致指针失效?
一般考虑除开操作元素本身以外的指针失效,不然都会失效从不安全到安全的排序:std::vector、std::deque:std::unordered_map / std::unordered_setstd::map / std::setstd::list
以下是对各容器类型中 可能导致指针/引用/迭代器失效 的关键操作总结:
容器类型
导致失效的操作
失效范围
std::vector
▶ push_back()、emplace_back() (当触发重新分配) ▶ insert() (可能触发重新分配)
所有迭代器、指针和引用失效
▶ reserve()、resize() (当容量变化)
std::deque
▶ 在中间位置插入/删除元素(如 insert(pos, value)、erase(pos))
所有迭代器、指针和引用失效
▶ push_front()、push_back() (当中控器需要扩展时,如新的缓冲区被添加)
可能局部失效(具体实现相关)
std::list
▶ 无 (链表结构,增删节 ...
sizeof vs strlen,std的string、C 风格字符串、字符数组
123456789char s1[] = "hello"; // sizeof(s1)=6 (包含'\0')char* s2 = "world"; // sizeof(s2)=8 (指针大小)char s3[10] = ""; // sizeof(s3)=10, strlen(s3)=0char empty = '\0'; // sizeof(empty)=1char* s4[] = "world"; // 报错,指针数组不能被一个字符串赋值,即由char*指针构成的数组s4不能用一个字符串赋值char* s4[] = {"world"}; //正确char* s4[2] = {"world","m"}; //正确char s1[] = "world"; // 创建字符串副本(会 ...
SQL
方法论MySQL可以认为是关系型数据库领域的事实标准之一
官方文档(最权威)MySQL 中文文档 | MySQL 中文网
《高性能MySQL》(经典)
LeetCode数据库题库(练习)
学习建议路线基础阶段(校招必备)
[[SQL语法]]
索引原理与优化
[[事务和隔离级别]]
[[基础架构(存储引擎对比)]]
基础运维(备份恢复、用户权限)
进阶加分项
执行计划解读
锁机制和死锁处理
主从复制原理
常见性能优化方法
InnoDB存储结构
数据库选型
刷题:[[sql:查询每个用户每天最近的评分]]]