算法小白
快慢指针找链表环入口 快慢指针找链表环入口
链表: struct ListNode { int val; struct ListNode *next; }; 快慢指针就是指指针每次移动的速度不一样,一般快指针每次移动两步,慢指针移动一步。 既然快慢指针移动的速度
2020-05-12
素数筛选法 素数筛选法
朴素检测一般我们判断某个区间中的的素数,都是直接循环遍历,进行判断。 这样的话,时间复杂度就是 $O(n \sqrt{n})$ 代码如下: #include <cmath> #include <iostream> bool
2020-05-12
辗转相除法和更相减损术 辗转相除法和更相减损术
高中学过的求大公约数的方法就是辗转相除法和更相减损术了。 辗转相除法递归版 #include <iostream> using std::cin; using std::cout; using std::endl; int gcd(
2020-05-12
快速幂 快速幂
一场梦,不怨也不恨,上了想象力的当。 快速幂,顾名思义,快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂n), 与朴素的O(n)相比效率有了极大的提高。 讲白了,就是你知道了n的n次方,要你求n的2n次方,你还会循环2n次去求n的
2020-05-12
斯特林公式 斯特林公式
斯特林公式是用来估算阶乘的,n越大,结果越准确! 斯特林公式: 或更精确的: 或: 或: , 或: , 如果要计算N后得到的数字为几位数,则我们可以知道其位数等于lgN!+1; 代码如下: #
2020-05-12
牛顿迭代法 牛顿迭代法
牛顿迭代法(Newton’s method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。 当然,牛顿迭代法也是已知已知的实现求方根最快的方
2020-05-12
C++二维vector使用 C++二维vector使用
你再不来,我要下雪了。 记录下二维vector的遍历(输出) 注:二维vector的赋值不能跟二维数组一样用scanf或者cin写入 遍历(迭代器) 方法一 void print() { vector<vector<cha
2020-05-11
万能头包含的头文件 万能头包含的头文件
// C++ includes used for precompiling -*- C++ -*- // Copyright (C) 2003-2018 Free Software Foundation, Inc. // // This
2020-05-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
关于memset 关于memset
被不了解memset狠狠的坑了一把,难受。 对于整型数组,若要是初始化为非0的值时应该使用for循环,字符型或0,用memset即可。 例如: #include<bits/stdc++.h> int main() { int
2020-05-11
各种二叉树(递归) 各种二叉树(递归)
为了方便粘贴,就没有放多文件编译。感谢leetcode的题库!要实现归并二叉树,自己要稍微更改下代码: #include<bits/stdc++.h> using std::cin; using std::cout; using st
2020-05-11
初学map的各种操作 初学map的各种操作
/* * @Author: incipe * @Date: 2019-09-22 23:14:53 * @LastEditTime: 2019-10-21 21:35:58 * @LastEditors: Please set La
2020-05-11
11 / 11