AcWing的笔记
文章平均质量分 93
一只可爱狗勾
双非一本咸鱼一条
展开
-
[AcWing算法基础课] Chapter2 数据结构(一)
链表与邻接表做面试题时,我们常用的实现方式是struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * };下面讲的主要是用数组原创 2021-11-18 10:51:13 · 388 阅读 · 2 评论 -
尝试理解KMP算法
查找一个模式串在母串中是否匹配暴力算法我们直接从左到右一位一位地匹配,遇到母串和模式串不相同的位时就原创 2021-11-18 10:40:23 · 772 阅读 · 11 评论 -
[AcWing算法基础课] Chapter1 基础算法(三)
双指针算法我们在快速排序和归并排序里就已经用到双指针算法了。第一类:第一个指针指向序列1,第二个指针指向序列2第二类:两个指针指向同一个序列for(int i=0,j=0;i<n;i++){ while(j<i && check(i,j)) j++; //每道题目的具体逻辑}核心思想:将朴素算法优化到O(n)问题1:有一个形如abc def hij的字符串,请输出每个单词(不含空格),每个单词占一行。#include <iostream>原创 2021-11-11 21:07:39 · 403 阅读 · 18 评论 -
[AcWing算法基础课] Week1 习题课
AcWing 786 第k个数#include <iostream>using namespace std;const int N=100000;int n;int k;int q[N];void quick_sort(int q[],int l,int r){ if(l>=r) return; int x=q[(l+r)/2],i=l-1,j=r+1; while(i<j){ do i++; while(q[i]<x)原创 2021-11-03 20:56:07 · 268 阅读 · 0 评论 -
[AcWing算法基础课] Chapter1 基础算法(二)
高精度两个比较大的整数相加 A+B,位数约为10的6次方两个比较大的整数相减 A+B,位数约为10的6次方一个大整数乘一个小整数 A*a,A的位数<=10的6次方,a的数值<=10的9次方一个大整数除以一个小整数 A/a大整数是如何存储的呢?其实是把大整数的每一位存入数组里面。数组下标为0的位置存储最低位。为什么?因为可能会进位,就需要在最高位补上数,在数组的最末尾是最容易补上的。(push_back)运算是模拟人工加法的过程先相加各位,得出结果和进位用代码模拟 Ai原创 2021-11-01 13:31:38 · 194 阅读 · 2 评论 -
[AcWing算法基础课] Chapter1 基础算法(一)
快速排序快速排序的主要思想基于分治。待排序数组q 第一个元素下标l 最后一个元素下标r确定分界点 q[l] q[(l+r)/2] q[r] 随机调整范围 挑选出x 第一个区间里的所有数都小于等于x 第二个区间里的所有数都大于等于x递归处理左右两个区间两块拼接到一起 整个区间都排好序了步骤2 的一种暴力思路是 开辟额外的数组空间 a[] b[]扫描q数组 小于q[x]的全部放入a[] 大于q[x]的全部放入b[]再把a\b里的每个元素重新赋值给数组q优美的方法:(不需要开辟额外空间)原创 2021-10-31 00:55:04 · 665 阅读 · 0 评论