算法学习笔记

1. 动态规划

动态规划要考虑状态表示和状态计算,状态的表示分为属性和转移,计算就是实际的状态转移方程。

在考虑这种问题的时候关键考虑我们是想要什么,比如想要从0到n的最优,那可能的方法就是从0到k的最优,到k+1的最优,直到到n的最优。

2.归并排序

归并排序是把大的排序划分成两个等大的小的排序,在排序大的时候假设小的已经排序好了,使用了递归的方法来解决分解问题的思路,同时因为每次都是二分,这样问题不会出现退化成没有优化效果的逐个排序。

3.广度优先搜索

广度优先搜索一般是用队列采用先进先出的方法逐层的访问,这个比较有特点,深度优先搜索本质上是用栈,不过大多数情况下利用递归,实际上是利用了内存提供的栈,仍然是在用栈实现。

4.双指针

双指针可以解决的一种问题,比如窗口的问题,一个指向窗口的尾部一个指向窗口初始位置,在不符合条件的时候移动后面的指针,快慢指针解决的问题还有比如链表里的一些问题。

5.vector和int*的区别

数组和vector的区别是vector可以动态的变化,可以设置非常量个的,对于数组往往得自己写一个const int N

6.优先队列

使用优先队列,最小优先和最大优先可以获得最大的k个数和最小的k个数,priority_queue。

相关推荐
库玛西26 分钟前
现代 C++ 智能指针全景指南:从 RAII 思想到工业级实践
c语言·开发语言·c++·笔记·面试
qeen871 小时前
【数据结构】自平衡二叉搜索树各种旋转算法原理解析及AVL树的C++实现
数据结构·c++·算法
lucas_AI2 小时前
1.2B 小模型赢过 235B 大模型:NaviDC-OCR 把文档解析卷明白了
人工智能·深度学习·算法
冻柠檬飞冰走茶2 小时前
PTA基础编程题目集 7-35有理数均值(C++语言实现)
开发语言·数据结构·c++·算法·均值算法
民乐团扒谱机3 小时前
【微实验】倒谱算法(Cepstrum)深度解析:原理、数学推导与代码实现
人工智能·算法·语音识别
Nil2084 小时前
leetcode 189轮转数组
数据结构·算法·leetcode
-dzk-4 小时前
【动态规划】LC 118.杨辉三角
算法·动态规划
恣逍信点4 小时前
《凌微经》静态自悖——变化之自因
人工智能·科技·算法·机器学习·业界资讯·拓扑学·哲学
吃着火锅x唱着歌4 小时前
LeetCode 3885.设计事件管理器
算法·leetcode·职场和发展
后季暖4 小时前
langgraph笔记(2)&& fastapi笔记
笔记