算法小白
05
12
快慢指针找链表环入口 快慢指针找链表环入口
链表: struct ListNode { int val; struct ListNode *next; }; 快慢指针就是指指针每次移动的速度不一样,一般快指针每次移动两步,慢指针移动一步。 既然快慢指针移动的速度
2020-05-12
12
素数筛选法 素数筛选法
朴素检测一般我们判断某个区间中的的素数,都是直接循环遍历,进行判断。 这样的话,时间复杂度就是 $O(n \sqrt{n})$ 代码如下: #include <cmath> #include <iostream> bool
2020-05-12
12
辗转相除法和更相减损术 辗转相除法和更相减损术
高中学过的求大公约数的方法就是辗转相除法和更相减损术了。 辗转相除法递归版 #include <iostream> using std::cin; using std::cout; using std::endl; int gcd(
2020-05-12
12
快速幂 快速幂
一场梦,不怨也不恨,上了想象力的当。 快速幂,顾名思义,快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂n), 与朴素的O(n)相比效率有了极大的提高。 讲白了,就是你知道了n的n次方,要你求n的2n次方,你还会循环2n次去求n的
2020-05-12
12
斯特林公式 斯特林公式
斯特林公式是用来估算阶乘的,n越大,结果越准确! 斯特林公式: 或更精确的: 或: 或: , 或: , 如果要计算N后得到的数字为几位数,则我们可以知道其位数等于lgN!+1; 代码如下: #
2020-05-12
12
牛顿迭代法 牛顿迭代法
牛顿迭代法(Newton’s method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。 当然,牛顿迭代法也是已知已知的实现求方根最快的方
2020-05-12
11
C++二维vector使用 C++二维vector使用
你再不来,我要下雪了。 记录下二维vector的遍历(输出) 注:二维vector的赋值不能跟二维数组一样用scanf或者cin写入 遍历(迭代器) 方法一 void print() { vector<vector<cha
2020-05-11
11
11
const int p 和 int const p const int p 和 int const p
主要讲下这两者的区别及用法!高能区 const int* p 和 int const* p是完全等价的!const int* const p 和 int const const* p 是完全等价的! 下面举几个例子来分析: int x
2020-05-11
11
关于memset 关于memset
被不了解memset狠狠的坑了一把,难受。 对于整型数组,若要是初始化为非0的值时应该使用for循环,字符型或0,用memset即可。 例如: #include<bits/stdc++.h> int main() { int
2020-05-11
13 / 14