- 博客(17)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 动态规划- Jump Game
多步到达:将距离i拆分为2段,左边距离k,右边i-1, 距离i可达的问题转换为了i位置k距离可达,和 j+k位置i-k距离可达, 即 dp[i][j] = dp[j][k] && dp[j+k][i-k]。由于是递增计算距离i是否可达,所以在计算 dp[i][j] 时, dp[j][k] 和 dp[j+k][i-k] 已经计算过。一步到达:遍历输入数组arr, 标记j位置后距离i=1~arr[j-1]个位置可达, 即 dp[j][i] = true。
2023-03-07 23:24:19
212
原创 动态规划 -Maximum Subarray
子数组长度为i>=2时,子数组之和为同样开始位置i-1长度子数组的值加上i长度子数组最后一个元素的值。即 dp[j][i] = dp[j][i-1] + arr[j-1 + i-1];构造dp数组, dp[j][i] 代表从j位置开始i长度的子数组的sum值。记录长度i为1的数组和为此位置元素的值。即 dp[j][1] = arr[j-1]计算dp过程中,记录dp[j][i]的最大值即为子数组的最大和值。这里避免重复计算的过程是当前子数组长度-1的子数组求和过程。
2023-03-07 00:38:22
154
原创 动态规划 - Kth Missing Positive Number
构造dp[2...arr.length], dp[i] 跳过的数字数量为 i-1 位置跳过的数字数量 加上 arr[i]-arr[i-1]-1。即dp[i-1] + arr[i-1] - arr[i-2] -1。构造dp[1], 第1个位置跳过的数字为 arr[i]-1 即 dp[i] = arr[i]-1。在第1个数字和最后一个数字之间, 返回 arr[i-1 -1] + (k - dp[i-1])构造dp一维数组, dp[i] 表示i位置之前跳过的数字总数。在第1个数字左边,直接返回k。
2023-03-06 23:08:16
153
原创 动态规划- jump game 2
如果不能直接触达,则拆分为2个子问题, 将长度 i 分为2部分, 左边长度为k, 右边为i-k+1(这里跳板共用了1个位置所以+1)。即 step = dp[j][k] + dp[j+k-1][i-k+1];遍历数组,nums[j] 一步可以触达的位置,在j位置后 nums[j] 个位置, 对应j位置长度i取值2~nums[j-1]+1 最小步数为1 ,即 dp[j][2~nums[j-1]+1] = 1 . 这里需要考虑范围越界的情况。这里实际上已经记录了所有位置可触达的长度为2的情况的最小步数。
2023-03-05 20:19:45
142
原创 动态规划 - WildcardMatching
思路基本一致,不同点在于此题的 '*' ,可以与空匹配, 即 输入串s[1,j] 与 pattern串 p[1,i] 匹配的话, 如果i+1位置为'*', 那么s[1,j] 也与 p[1,i+1] 匹配。
2023-03-05 00:07:52
101
原创 动态规划 - 收集雨水
计算方式为从第1个位置记录高度大于i的位置, 每2个位置之间的空格数,即为这2个位置之间能容纳的雨水数。从前向后遍历, 可容纳的雨水数累加即为此高度当前位置能容纳的最大雨水数。1.①与1.②之和, 即为i高度/j位置的最大雨水数量 dp[i][j]构造dp数组, dp[i][j]代表i高度,j位置能收集到的雨水之和。② 比i高度低的j位置能容纳的雨水之和, 即 dp[i-1][j]① 当前高度i,这一行能收集的雨水之和。
2023-03-04 15:25:52
124
原创 动态规划 - 正则匹配
构造boolean dp数组,数组[i][j]的含义为长度为 i 的patter子串, 与长度为 j 的输入子串,是否相匹配。= '.', 那么对于后续连续位置的 s[j] == p[i-1], 均匹配。p[i-1] == '.', 那么对于后续任意位置的s[j...s.length],均匹配。= '*', p[i] == s[i]时匹配。p[i] == '.', 那么对任意 s[j] , 均匹配。
2023-03-03 20:51:44
150
原创 动态规划 - 生成括号
n>=2时, 将括号()套在合适的地方。这些地方的位置j取值0~n-1, 代表被套住的左边一半, 即dp[j] , 右边一半没套住的则为 dp[n-1-j] . 左边一半和右边一半, 各自有多种可能, 即在此长度下的所有括号对组合。那么对应n对括号, 有len(dp[j]) * len(dp[n-1-j]) 种可能结果。构造dp二维数组, 第一维为n的所有可能取值即括号对数,第二位为当前括号对数的所有可能组合。n=0 时, 无括号 dp[0] = [];
2023-03-02 23:37:04
194
原创 动态规划 - 最长回文子字符串
任意长度的回文子串,都可以去除两边的相等字符串(更高层的子问题),最终得到长度为1或2的最短回文字符串。更长的回文字符串可以从长度为1或2的回文串拓展两侧相同字符得到。对于子串长度i>3,位置为j的情况, 可以通过长度为dp[i-2][j+1]=true 加上s[j] = s[j][j+i-1] 来判定为回文。处理上述步骤1的情况, 构造子串长度为1或2时的dp数组。长度为1统统设回文为true 即 dp[1][j]=true,长度为2的两个字符相等也设置回文为true 即 dp[2][j]=true。
2023-03-02 00:59:51
230
原创 动态规划 - 最长公共子序列
s1 的i位置字符与 s2的 j 位置字符不同,那么 s1 [0,i] 和 s2[0,j] 最长公共子字符串,即为s1[0,i-1] 与 s2[0,j-1] 最长公共子字符串 里更长的那一个。dp[i][j] = max(dp[i-1][j], dp[i][j-1])s1 的i位置字符与 s2的 j 位置字符相同, 那么 s1 [0,i] 和 s2[0,j] 最长公共子字符串,即为s1[0,i-1] 与 s2[0,j-1] 最长公共子字符串 + s1[i] (同s2[j])。计算最长公共子字符串。
2023-03-01 22:53:35
205
1
原创 hbase中的数据结构
跳表(skiplist)hbase的数据是按rowkey有序排列的,需要对新添加的数据进行排序,新添加的数据在内存中会使用java.concurrent.ConcurrentSkiplistMap构建memstore,最终持久化为hfile存到磁盘。为什么使用skiplist,一方面因为高效,插入操作的时间复杂度为logn,另一方面在写磁盘的时候,从头至尾遍历一遍链表顺序写入磁盘即可。LSM树 (log structured merge tree)这里运用的是归并排序的思想,只不过子问题的最
2021-11-06 21:58:11
1865
原创 simhash算法
simhash算法适用场景检测文本相似度。优势整段文字计算哈希值比较文本相似度的方式,对于句中少量变更的情况,无法将两篇文章判定为相似的。因为这种方式,没有在结果中体现出局部的信息。simhash基于关键词信息,针对这种情况可以算出接近的哈希值,判定出两篇文章为相似内容。实现提取关键词-词频信息去除转义html encode去除StringEscapeUtils.unescapeHtml4(text)去除符号text.replaceAll("[^\\u4E00-\\u9FFFa-z
2020-08-31 21:10:04
255
原创 linux dup与dup2
今天看书遇到了两个函数dup, dup2 半天才弄明白它们干了些什么, 现分享如下: 当我们用open()打开一个文件时, 会得到一个文件描述符, 这个文件描述符会指向一个file结构体,最终对文件的操 作需要借助这个结构体 文件描述符从0开始,默认0为stdin,1为stdout,2为stderr dup和dup2的百度百科给出的解释是复制一个现存的文
2013-10-08 16:00:01
747
原创 算法学习笔记 2.2分治
学习章节: 2.2分治学习内容:1、棋盘覆盖 在2^k * 2^k的棋盘中, 有一格被标记, 现要求用占3小格的'L'将棋盘完全覆盖并且不能重叠,求覆盖方法。代码实现:#include static int count = 0;static int Board[8][8] = {0};void ChessBoard(int lr, int l
2013-09-27 00:29:07
548
原创 算法学习笔记 2.1递归
学习教材:计算机算法设计与分析(王晓东) 第四版学习章节:2.1递归学习内容:1、排列问题 求出集合X中第m到第n个连续元素的全排列。 代码实现:#include void Swap(int *a, int *b){ int tmp; tmp = *a; *a = *b; *b = tmp;}vo
2013-09-26 02:22:24
560
原创 简单的bmp验证码识别 (c++)
菜鸟学习笔记供新手学习参考,一个有着很多限制的小程序,大神路过多多指点。 不废话,正题如下: bmp验证码识别的流程大概分为: 1、获取bmp图片中识别需要用到的数据,包括像素高度、像素宽度以及位图数据。 2、对获取的数据进行必要的处理,包括灰度化、二值化、去噪等。 3、对处理后的数据(一个二值化的数组)进行扫描,分割出各个字符(即确定
2012-11-28 12:30:14
5118
测试问题,请勿回答!!!
2021-02-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人