经典题
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:
12输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
12输入:n = 1输出:["()"]
题解:暴力递归
12345678910111213141516171819202122232425262728293031323334class Solution { public List<String> generateParenthesis(int n) { List<String> combinations = new ArrayList<String>(); generateAll(new char[2*n], 0, combinations); return combinati ...
矩阵
48. 旋转图像难度中等1064
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
你必须在** 原地** 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。
示例 1:
12输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]
示例 2:
12输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]
示例 3:
12输入:matrix = [[1]]输出:[[1]]
示例 4:
12输入:matrix = [[1,2],[3,4]]输出:[[3,1],[4,2]]
提示:
matrix.length == n
matrix[i].length == n
1 <= n <= 20
-1000 <= matrix[i][j] <= 1 ...
哈希表
447. 回旋镖的数量给定平面上 n 对 互不相同 的点 points ,其中 points[i] = [xi, yi] 。回旋镖 是由点 (i, j, k) 表示的元组 ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序)。
返回平面上所有回旋镖的数量。
示例 1:
123输入:points = [[0,0],[1,0],[2,0]]输出:2解释:两个回旋镖为 [[1,0],[0,0],[2,0]] 和 [[1,0],[2,0],[0,0]]
示例 2:
12输入:points = [[1,1],[2,2],[3,3]]输出:2
示例 3:
12输入:points = [[1,1]]输出:0
解答:
123456789101112131415161718// 考虑数组顺序,可以用排列组合的方式,枚举一个个算距离,存储距离相同的点的个数放入哈希表中,最后取出哈希表中的数据,一个个排列组合class Solution { public int numberOfBoomerangs(int[][] points) { ...
二叉树
600. 不含连续1的非负整数难度困难138
给定一个正整数 n,找出小于或等于 n 的非负整数中,其二进制表示不包含 连续的1 的个数。
示例 1:
1234567891011输入: 5输出: 5解释: 下面是带有相应二进制表示的非负整数<= 5:0 : 01 : 12 : 103 : 114 : 1005 : 101其中,只有整数3违反规则(有两个连续的1),其他5个满足规则。
说明: 1 <= n <= 109
解答:
12345678910111213141516171819202122232425262728293031323334class Solution { public int findIntegers(int num) { //根据构建斐波那也数列 int[] dp = new int[32]; dp[0] = 1; dp[1] = 2; for(int i = 2; i < 32; i++) { dp[i] = ...
动态规划
600. 不含连续1的非负整数难度困难138
给定一个正整数 n,找出小于或等于 n 的非负整数中,其二进制表示不包含 连续的1 的个数。
示例 1:
1234567891011输入: 5输出: 5解释: 下面是带有相应二进制表示的非负整数<= 5:0 : 01 : 12 : 103 : 114 : 1005 : 101其中,只有整数3违反规则(有两个连续的1),其他5个满足规则。
说明: 1 <= n <= 109
解答:
12345678910111213141516171819202122232425262728293031323334class Solution { public int findIntegers(int num) { //根据构建斐波那也数列 int[] dp = new int[32]; dp[0] = 1; dp[1] = 2; for(int i = 2; i < 32; i++) { dp[i] = ...
差分与复原
时间序列的差分与复原在时序分析时,我们经常需要将原始序列进行差分,然后做出拟合或者预测,最后还需要将拟合的或者预测的值恢复成原始序列。这里,使用Pandas的Series中的diff和cumsum函数可以方便的实现。
一阶差分与复原12345678910111213import matplotlib.pyplot as pltimport pandas as pdtime_series = pd.Series([2, 4, 3, 5, 6, 7, 4, 5, 6, 3, 2, 4])time_series_diff = time_series.diff(1).dropna()time_series_restored = pd.Series([time_series[0]], index=[time_series.index[0]]).append(time_series_diff).cumsum()print(time_series)print(time_series_diff)print(time_series_restored)plt.plot(time_series, color ...
添加git快捷方式
Git 右键添加Git Bash
win + r
输入regedit
进入 计算机\HKEY_CLASSES_ROOT\Directory\Background\shell
新建如下的项 git bash 和 command
在git bash 中添加字符串值 Icon ,数值位于git 安装目录下\Git\mingw64\share\git\git-for-windows.ico
在command 中添加运行的命令,修改默认的数值 \Git\git-bash.exe
参考:
Git 右键添加Git Bash
git使用
Git三种工程区域 & 文件状态三种工程区域
版本库(Repository)
在工作区中有一个隐藏目录.git,这个文件夹就是Git的版本库,里面存放了Git用了管理该工程的所有版本数据,里面存放了Git用来管理该工程的所有版本数据,也叫本地仓库。
工作区(Working Directory)
日常工作的代码文件或者文档所在的文件夹。
暂存区(stage)
一般存放在工程根目录.git/index文件中。
三种文件状态
已提交(committed)
该文件已经被安全的保存在了本地数据库中了;
已修改(modified)
修改了某个文件,但还没有提交保存;
已暂存(staged)
把已修改的文件放在下次提交时要保存的清单中。
Git常用命令工程准备
工程克隆——git clone
查看工作区
查看工作区的修改内容——git diff
查看工作区的文件状态——git status
文件修改后提交推送
新增/删除/移动文件到暂存区——git add/ git rm/ git mv
提交更改的文件——git commit
推送远端仓库——git push
查看日志
查看 ...
ARIMA
(差分自回归移动平均)ARIMA1. 时间序列平稳性1.1 平稳性平稳性就是要求经由样本时间序列锁得到的拟合曲线在未来一段时间内仍能顺着现有的形态惯性地延续下去。平稳性要求序列的均值和方差不发生明显的变化。
严平稳严平稳表示的分布不随时间的改变而改变。如白噪声(正态分布),无论怎么取,都是期望为0,方差为1
宽平稳期望与相关系数(依赖性)不变。未来某时刻的t的值$Xt$就要依赖于它的过去的信息,所以需要依赖性。这种依赖性不能有明显的变化
1.2 差分法使用差分法可以使得数据更平稳,常用的方法就是一阶差分和二阶差分。
时间序列差分值的求解可以直接通过pandas中的diff函数得到:
1234// 一阶差分data = data.diff(1)// 二阶差分data = data.diff(1)
2. ARIMA模型介绍2.1 自回归模型AR自回归模型描述当前值与历史值之间的关系,用变量自身的历史数据对自身进行预测。自回归模型必须满足平稳性的要求。
自回归模型首先需要确定一个阶数p,表示用几期的值来预测当前值。p阶自回归模型的公式定义为:$$y _ { t } = \mu + \sum ...
ADF检验
ADF检验概念在使用很多时间序列模型的时候,如ARMA、ARIMA,都会要求时间序列是平稳的,所以一般在研究一段时间序列的时候,第一步都需要进行平稳性检验,除了用肉眼检测的方法,另外比较常用的严格的统计检验方法就是ADF检验,也叫做单位根检验。
ADF检验全程是Augmented Dickey-Fuller test,顾名思义,ADF是Dickey-Fuller检验的增广形式。DF检验只能应用于一阶情况,当序列存在高阶的滞后相关时,可以使用ADF检验,所以说ADF是对DF检验的扩展。
单位根(unit root)在做ADF检验,也就是单位根检验时,需要先明白一个概念,也就是要检验的对象——单位根。
在一个自回归的过程中:
$$y _ { t } = b y _ { t - 1 } + a + \epsilon _ { t }$$
,如果滞后项系数b为1,就称为单位根。当单位根存在时,自变量和因变量之间的关系具有欺骗性,因为残差序列的任何误差都不会随着样本量(即时期数)增大而衰退,也就是说模型中的残差的影响是永久的。这种回归又称为伪回归。如果单位根存在,这个过程就是一个随机漫步(rand ...