首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
算法基础
Howe
创建于2022-11-26
订阅专栏
ACWing算法基础
暂无订阅
共15篇文章
创建于2022-11-26
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
拓扑排序(图的宽搜应用)
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 拓扑序列 图的宽搜很经典的应用就是求拓扑序 针对有向图,无向图没有拓扑序列 当把图按照拓扑序排好后,所有边都是从前指向后的 并不是所有图都有拓扑序
图的BFS/DFS
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 图 树是一种特殊的图:有向无环图 图分为有向图和无向图 无向图可以看作是特殊的有向图,一条边a-b可以建立一条a到b的,再建立一条b到a的 有向图
BFS/DFS
BFS宽度优先搜索,DFS深度优先搜索。DFS有两个重要概念:回溯、剪枝 深度搜索没有常用的框架,广度搜索有 只有边权值为1的最短路问题可以用广度搜索,而且一般不用BFS,因为时间复杂度较高,一般用
算法基础STL
C++ 对模板(Template)支持得很好,STL 就是借助模板把常用的数据结构及其算法都实现了一遍,并且做到了数据结构和算法的分离。例如,vector 的底层为顺序表(数组),list 的底层为
栈与队列(数组模拟)
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 栈与队列(数组模拟) 栈 先进后出,先插入的元素后被弹出。类似一个桶状。 队列 先进先出,先进的元素先出。类似排队。 STL STL栈 stack
链表(数组模拟)
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 链表(数组模拟) 为什么要模拟? 效率问题,第一种实现方式是指针+结构体的方式,面试题多,笔试题不多,因为每一次创建一个新的链表就要调用一下new
前缀和(一维、二维)
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 ## []()一维前缀和 数组:\ a 1 , a 2 , . . . a n a\_1,a\_2,...a_n a1,a2,...an\
双指针算法
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 快排和归并排序都是双指针算法 双指针算法会将上述O(n²)的朴素算法变为O(n) 例子: 输入一个字符串,单词间用空格分开,输出单词,每个单词占一
区间合并算法
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 区间合并 给定n个区间[$l_i,r_i$],要求合并所有有交集的区间。 注意如果在端点处相交,也算有交集。 输出合并完成后的区间个数。 例如:[
离散化(整数、有序)
本文已参与「新人创作礼」活动,一起开启掘金创作之路。离散化(整数、有序)去重: unique将不重复元素放到前面,重复的放到后面,返回最后一个不重复的位置,再用erase去除最后重复的
归并排序算法
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 主要思想:分治,但与快速排序有些不同,快速排序是先调整范围再递归左右两边,归并是先递归再归并左右两边 步骤 确定分界点mid=(l+r)/2 递归
快速排序算法
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 主要思想:分治 步骤: 确认分界点:q[l]、q[(l+r)/2]、q[r]、随机 调整范围 递归处理左右两端 第一种方法(想法简单,但是需要额外
高精度(仅在C++)
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 Java有大整数类,没有位数要求 Python默认数范围无限大 仅C++需要 $A+B$,A和B的位数大约是$10^6$ $A-B$,A和B的位数
差分(一维、二维)
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 差分是前缀和的逆运算 一维差分 由B得到A,求B的前缀和,O(n) 差分作用: 如果暴力做就是O(n),差分做就是O(1) 如果$b_l+c$,那
常用位运算
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 lowbit是树状数组的一个基本操作,返回x的最后一位1 应用:可以统计x里面1的个数 二进制中1的个数 题目:给定一个长度为n的数列,请你求出数