回溯法
回溯算法框架
回溯算法实质上是一种暴力穷举算法
穷举的过程就是遍历一颗多叉树的过程
12345678910111213141516171819202122List<Value> ans;void dfs(路径, 选择列表) { if (满足结束条件) { ans.add(路径); return ; } for (选择 : 选择列表) { 做选择; dfs(路径, 选择列表); 撤销选择; }}// 多叉树遍历框架void dfs(TreeNode root) { if (root == null) { return ; } for (TreeNode child : root.children) { dfs(child); }}
回溯三问:思考回溯问题的套路
当前操作?枚举path[i]要填入的字母
子问题?构造字符串 ≥i 的部分
下一个子问题?构造字符串 ≥ i + 1 的部分
dfs( ...
双指针
条件:数组满足单调性
同向双指针 滑动窗口209. 长度最小的子数组给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
示例 1:
123输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组[4,3] 是该条件下的长度最小的子数组。
示例 2:
12输入:target = 4, nums = [1,4,4]输出:1
示例 3:
12输入:target = 11, nums = [1,1,1,1,1,1,1,1]输出:0
提示:
1 <= target <= 109
1 <= nums.length <= 105
1 <= nums[i] <= 105
进阶:
如果你已经实现 **O(n) 时间复杂度的解法, 请尝试设计一个 O(n log(n)) 时间复杂度的解法。
1234567891 ...
链表 指针
反转链表206. 反转链表给你单链表的头节点head,请你反转链表,并返回反转后的链表。
示例 1:
12输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]
示例 2:
12输入:head = [1,2]输出:[2,1]
示例 3:
12输入:head = []输出:[]
提示:
链表中节点的数目范围是 [0, 5000]
5000 <= Node.val <= 5000
进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?
12345678910111213141516171819202122/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, Li ...
CGI知识
什么是CGICGI是公共网关接口(Common Gateway Interface)英文缩写。CGI是一种在网络服务器上运行程序的标准协议,通常用于处理用户请求。CGI运行服务器调用外部程序,并将其输出返回给客户端。CGI的一个典型应用场景是用户在网页上提交一个表单,表单的数据被发送到服务器上的一个CGI脚本,CGI脚本根据数据生成相应的HTML页面并返回给用户。
配置CGI环境1. 安装apache21sudo apt install acache2
安装完成后查看状态
1sudo systemctl status apache2
12345678910111213● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: **active (running)** since Fri 2023-05-05 20:40:05 PDT; 5min ago ...
CGI 补充内容
CGI的运行原理当用户在网页上发出一个请求,比如点击一个链接或提交一个表单,请求的URL会指向一个服务器上的CGI脚本。服务器会根据URL中的参数和请求方法,将一些信息传递给CGI脚本,比如查询字符串、内容长度、请求方法等,这些信息通常通过环境变量或命令行参数传递。服务器还会将请求的主体部分,比如表单数据,通过标准输入流传递给CGI脚本。CGI脚本会根据接收到的信息进行相应的处理,比如查询数据库、生成动态内容等,并将处理结果通过标准输出流返回给服务器。返回的结果必须包含一个合法的HTTP头部,指明内容类型、状态码等信息,然后是一个空行,再然后是实际的内容,比如HTML页面、图片数据等。服务器会将CGI脚本的输出作为响应发送给用户。
运用CGI的例子一个简单的计数器脚本,它可以显示网页被访问的次数。这个脚本可以用C语言或Perl语言编写,并放在服务器的cgi-bin目录下。当用户请求这个脚本的URL时,服务器会执行这个脚本,并将其输出返回给用户。输出是一个包含计数器值的HTML页面,每次访问都会增加一。这个脚本需要一个文本文件来存储计数器值,并在每次执行时读取和更新这个文件。
CGI可能 ...
Git知识
版本控制1、本地版本控制记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用
2、集中版本控制 SVN所有的版本数据都储存在服务器上,用户的本地只有自己以前所同步的版本。
3、分布式版本控制 Git所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以在本地提交,只需在联网时push到相应的服务器。
Git是目前世界上最先进的分布式版本控制系统
程序1、Git BashUnix与Linux风格的命令行,使用最多,推荐最多
2、Git CMDWindows风格的命令行
3、Git GUI图形界面的Git
Git配置1、查看用户名和邮箱1 git config --global --list
2、配置用户名和邮箱用户名
1 git config --global user.name "zishuQ"
邮箱
1 git config --global user.email "1574908708@qq.com"
Git基本理论工作区域
1、工作区(Working Directory):
平时存 ...
Git 使用
git配置(git config)123456git --version # git版本git config --global user.name "zishuQ" # 设置提交用户名git config --global user.email "zishuq77@foxmail.com" # 设置提交邮箱git config --global credential.helper store # 保存用户名信息,避免每次都要输入git config --global --list # 查看git config中的信息
省略(Local):本地配置,只对本地仓库有效
-global:全局配置,所有仓库生效(用的最多)
-system:系统配置,对所有用户生效(一般不会用到)
创建仓库(git init/clone)可以通过两种方法建立仓库
12git init [repo name]git clone
123git init # 对当前目录进行git初始化git init my-repo # 在当前目录下新建my ...
MySQL知识
1、初识MySQL
启动服务
本地启动 (管理员模式打开cmd)
切换到mysql/bin目录
1 net start mysql
phpstudy启动
直接点击启动
登陆账号
1 mysql -u [用户名] -p
例子:
1 mysql -u root -p123456
p后面不能加空格,直接输入密码
也可以不带内容直接-p,之后再单独输入密码
退出连接
1 exit;
结束服务
本地结束
1 net stop mysql
phpstudy结束
直接点击停止
2、操作数据库1、数据库 > 数据库中的表 > 数据库中的表的数据
创建数据库
1 create database [if not exists] [库名]
删除数据库
1 drop database [if exists] [库名]
使用数据库
123 --如果表名是特殊字符,就需要带`` use [库名] use `school`
查看数据库
1 ...
MySQL配置
安装
1sudo apt install mysql-server
服务配置
123sudo systemctl start mysql # 启动MySQL服务sudo systemctl stop mysql # 停止MySQL服务sudo systemctl enable mysql # 开机自动启动MySQL服务
账户初始化
登录
123mysql -u root -pmysql -u用户名 -p密码 [ -h数据库服务器IP地址 -P端口号]
root设置密码
1234567UPDATE user SET password=password('root') WHERE user='root';flush privileges;ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';# mysql8.0 不再支持函数password('passwor ...