主页

链表刷题笔记总结

以下内容仅为刷题总结,只记录目前遇到过的情况,如果后面遇到了更多可能性再总结 链表定义 在链式存储当中,对于节点是使用指针指向的方式进行数据的存储,其结点定义类似如下形式: struct LinkNode { int val; LinkNode *next; LinkNode() {} LinkNode(int x) : val(x), next(NULL) {} }; 链表的好处是在添加或者删除特定节点的时候时间复杂度比顺序存储要小。在经常需要删除和添加操作节点的时候,通过直接修改节点的指针,可以快捷的对节点进行对应操作。 结构 链表划分为三个部分,头+中间的数据节点+尾。 头结点 其中头节点有两种常见的处理方式,一种是通过一个虚拟...

阅读更多

快慢指针

以下内容仅为刷题总结,只记录目前遇到过的情况,如果后面遇到了更多可能性再做记录。 快慢指针 快慢指针的主要思想有点类似追击问题,通过让两个不同的小人以不同的速度在线性路径上行进,来招到某个特殊的相对位置。通常可以用来解决大致一下两类问题: 线性路径上某特殊点的位置和对应的操作 判断链表中是否存在循环(以及循环的点位置) 思路 一般的思路是让两个不同的小人先以某一个相对的路径进行移动,之后再以一定倍率的相对速度进行继续移动,如果发生了『追击』、『相遇』或者『触底』等特殊事件的时候,就可以作为解题需要的特殊位置来进行处理。 举例一:回文链表 如何判断出链表的中点位置? 答:通过两个速度分别为v和2v的指针同时从表头开始出发,当2v速度的指针『触底』的时候,以速...

阅读更多

WSL2开机自启和指向Win的DNS

前言 这算是被WSL折腾代理的第三次了。前两次解决代理的方案分别是通过脚本获取到Windows的IP之后再设置proxy,当时因为防火墙的问题不知道为什么总是不能生效。之后采取的是通过Clash开启网卡代理,让所有流量都能经过Clash处理,自然也就能处理WSL2中的流量了。但这样处理的致命缺点就是所有的流量都由Clash代理,其中的性能使用不可小觑,所以最后还是采取了WSL+Zsh的Proxy插件的方式来实现常见需求的代理。 在进行操作之前首先要有的操作: 安装好zsh,并安装zsh-proxy 操作流程 在Windows开机的时候自动启动WSL内的脚本,同时修改该进程下的WSL的Host 添加一个脚本,在每次WSL开机的时候自动将宿主机的IP映射到win...

阅读更多

main()函数中arg和argv参数的作用

参考文章 关于int main( int argc, char* argv[] ) 中arg和argv参数的解析及调试 前言 今天在看一些代码的时候偶然看到自己刚开始学C的时候,main()函数中都会有一个(int argc,char* argv[],char **env)的传参。但是到现在依旧不理解这几个参数的意义和它们代表的作用,在稍微查阅了一下以后,浅显的总结一下。 具体意义 如果要使用argc和argv的话(char **env暂时没遇到,不做记录),只需要在main函数当中添加这两个参数即可,大致参考写法类似如下: int main(int argc, char** argv) { ... return 0; } 解释 argc是一个整形的参数,...

阅读更多

Ubuntu下安装Oh My Zsh

参考文章 Ubuntu 下 Oh My Zsh 的最佳实践「安装及配置」 - SegmentFault 思否 用 zsh-proxy 一键配置常用代理 安装Oh My Zsh 安装Zsh sudo apt install zsh -y chsh -s /bin/zsh echo $SHELL # 如果输出bash则需要重启SHELL 安装Oh My Zsh wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh Zsh的配置 字体 字体安装(Hack NF) apt install fonts-hack 其他字体:ryanoasis...

阅读更多

C++中引用和指针有关const限定符的区分

指针和引用: 总结自C++ Primer,仅供自己学习参考 引用: 引用本身只是目标对象的一个别名,自己本身并不是对象 变量引用可以间接对变量进行修改 常量别名代表的只能是常量,如果常量别名一个变量,也是先通过创建一个临时量,然后对这个临时量创建别名 变量别名不能指向一个常量,也不能指向运算后的值后的结果,e.g. int pi = 3; const int PI = 3; //当对象为变量时 int &revPI = pi; //正确,变量的别名代表的是一个变量 int &revPIt = pi *2; //错误,不能指向变量运算后的结果(即返回的是一个常量值...

阅读更多

Clash下修复Windows中Steam不记住密码的问题

前言 字太多可不看。 在开启了Clash之后,经常会每次登入Steam都出现无法保存密码,需要重新输入密码的情况。出现这种情况的原因是因为Steam根据store.steampowered.com确定自己的位置,在开了加速器/Clash之后,由于加速的原因经常出现大范围的IP变动,所以导致Steam需要重新输入密码来验证。解决问题的办法也很简单,只需要在Clash中添加规则让对应域名不走加速即可。 添加规则可以在自己手动订阅配置文件后一次一次添加,也可以通过Clash For Windows下的parsers配置修改来让每次配置文件更新的时候进行一个预处理,按自己的需求进行添加,具体操作可以参考:配置文件预处理 Clash for Windows 在Clash For ...

阅读更多

Windows下的包管理器:Scoop

参考文章: 「一行代码」搞定软件安装卸载,用 Scoop 管理你的 Windows 软件 Scoop - 最好用的 Windows 包管理器 - P3TERX ZONE 前言 在知道并安装Scoop的时候只是稍微听说过winget-cli一类的工具,不过由于一直对Windows系统的软件管理早就绝望,下意识的认为对Windows来说,这种终端的程序管理应该几乎没什么用。但在前几天偶然希望在Windows Terminal上寻找一个类似Linux的sudo的程序,发现了Scoop这个神器,并且在使用了一两天尝到甜头后,决定写一篇博客把大概的使用功能都记录一下。 Scoop的安装 前置条件 安装在联网的情况下有直接的指令,但是安装之前需要保证环境满足以下要求: ...

阅读更多