计算平方根的一些方法总结
写在前面
重新熟悉下计算平方根的算法, 当然对于力扣的平方根69. x 的平方根 - 力扣(LeetCode), 已经出现了不下五种的方法了, 这次简要总结下. 代码均为C++.
调包
return (int) sqrt(x);
return (int) pow(x, .5);
高级调包
应用了
\(\sqrt x=\exp(\frac{\ln x}2)\)
这一关系, 需要注意浮点数舍入误差.
int mySqrt(int x) {
if (x == 0) {
return 0;
}
int ans = exp(0.5 * log(x));
return ((long long)(ans + 1) * (ans + 1) ...
C++之什么时候应该使用typename或class
写在前面
对于C++模版元编程, 使用关键字typename还是class显然是不重要的, 除了在模版模版参数中使用类类型一定要用class声明类外, 例如下面这个例子, 为容器给出泛型函数, 虽然这样事实上只针对序列式容器:
template <typename T, template <typename> class Container>
ostream &operator<<(ostream &os, Container<T> v) {
for (auto i : v) os << i << " ";
return os << endl;
}
在模版中, 一...
通过公网ip访问云服务器mysql的方法
方法
环境:
Ubuntu20.04(x86_64)
MySQL8.0.31
开端口
addtcp 3306
reufw
并且在阿里云的管理界面开3306端口.
改配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
其中bind-address改为:(要不然只能在本地访问)
bind-address = 0.0.0.0
添加数据库配置
# 进入数据库
# mysql -uroot -p
# 输入
CREATE USER 'root'@'%' IDENTIFIED BY '<数据库密码>';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'...
Macos下asciiquarium出现.cursesboot.c: loadable library and perl binaries are mismatched (got handshake key 0xfc00080, needed 0xc700080)的问题解决
问题
m1Mac brew
一个终端养鱼程序(Perl):ASCIIQuarium, https://github.com/cmatsuoka/asciiquarium;
在使用brew安装之后报错了:
./CursesBoot.c: loadable library and perl binaries are mismatched (got handshake key 0xfc00080, needed 0xc700080)
然后网上找一圈也没有解决方案, 后来发现重新从源构建就好了:
brew reinstall asciiquarium --build-from-source
完美:
寻找缺失数字,出现次数不同数字的题目总结
写在前面
近期看面经, 发现有一类题常出现, 那就是寻找缺失数字, 基于这道题的变式题目也很多, 下面来总结一下.
下面总结的是缺失数字以及出现次数不同于其他数字的两大类题目.
主要用到的知识点:
哈希集合: 需要占用空间, 可以考虑原地哈希, 但是不好想.
排序+二分: 排序操作时间复杂度高.
位运算: 这里主要指异或运算.
数学方法: 找关系联立方程组, 通过求和等方式完成.
特殊解法:(只能针对某道题)
缺失数字类
关于缺失数字, 有下面这几类题型:
已排序, 找0~n-1中缺失的数字.剑指 Offer 53 - II. 0~n-1中缺失的数字 - 力扣(LeetCode).
已排序, 找缺失的第$k$个数字.1539. 第 k 个...
C++unordered_map插入元素的小坑与map添加更新元素的性能比较
坑
来看这样一个例子:
#include <iostream>
#include <unordered_map>
using namespace std;
void t1() {
unordered_map<int, int> m1{};
for (auto &i : {1, 2, 3, 1}) m1[i]++;
cout << "m1[4]=" << m1[4] << endl;
cout << "m1.count(4)=" << m1.count(4) << endl;
for (auto &[k, v] : m1...
Windows下latex报错error font simsun not found的解决方案
问题与解决
安装字体simsun之后, 在$\LaTeX$文中写:
\setCJKmainfont{simsun}
显示没法找到字体, 如果安装之后还是找不到, 大概率是字体名称不对的问题, 通过
fc-list :lang=zh-cn
查找字体, 然后看看字体名称是什么:
SimSun
这就对了.(这里面的输出可能会有乱码, 不重要, 找字体英文名称即可)
同理还有:
SimHei
当然, 前提是win+R运行框输入fonts跳转到的文件夹中有要导入的字体, 如果没有需要安装, 安装的话需要为所有用户安装, 否则还是找不到.
备选方案:(终端cmd或powershell管理员模式下运行)
fc-cache -rv
刷新字体缓存.
Nvim在ubuntu下报错executable 'ctags' can't be found. gute ntags will be disabled. you can re Enable it by setting g:gutentags_enabled back to 1.的解决方法
问题
最近在Ubuntu云服务器环境中部署了一下nvim, 用的大佬的配置1, 但是在Mac上没问题(指的是执行:checkhealth), 却在Ubuntu上有问题了, 具体信息为打开.yaml文件之后报错(其他文件没有此类问题):
Executable 'ctags' can't be found. Gutentags will be disabled. You can re-enable it by setting g:gutentags_enabled back to 1.
一开始我天真的以为加上let g:gutentags_enabled=1这句就行了, 没想到根本没有用, 翻看google发现, 原来解决方法竟然如此简单…
参考2,3.
解决
一开始我用了2...
共计 455 篇文章,57 页。
您是Zorch的第 个小伙伴
Hits