自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 Leetcode1117. H2O 生成 (多线程编程)

原题链接H2O生成Semaphore 信号量Semaphore 信号量 + CyclicBarrier 同步屏障Semaphore 信号量每生成两个氢原子,再去生成一个氧原子class H2O { private Semaphore s; private Semaphore o; public H2O() { s = new Semaphore(0); o = new Semaphore(2); } public void

2021-06-28 15:09:09 254

原创 KMP算法

KMP模式匹配算法推导代码例题推导KMP是一种字符串模式匹配的改进算法。假定模式串为B,主串为A,当B[j]和A[i]不匹配时,i不会回退,j并不会从位置0开始重新匹配,而是回退到合适的位置。那么,KMP算法首先应该解决的就是如何找到合适的回退位置。代码显然时间复杂度为O(n + m), 空间复杂度为O(m),n是文本串的长度,m是模板串的长度 /** * kmp算法 * * 计算模板串S在文本串T中出现了多少次 * @param S stri

2021-06-12 16:13:02 108

原创 旋转数组的最小数字 (二分法)

旋转数组的最小数字NC71直接上代码和注释 /** * 二分法 * 如果二分之后能够明确目标值在二分的哪一侧, * 即可使用二分法 * * 二分得到一个mid,arr[mid]要和一个compVal比较以判断 * 目标值的位置, * 若 compVal为arr[right], * 1. arr[mid] > compVal, 最小值一定是在mid的右侧,

2021-06-08 11:06:36 133

原创 牛客NC125 未排序数组中累加和为给定值的最长子数组长度(动态规划、哈希法)

牛客NC125直接上代码和注释目录动态规划哈希法类似的题目动态规划时间复杂度O(n ^ 2),空间复杂度O(1) /** * 动态规划 * 状态dp[i][j],子数组[i-j]的和 * * 可以进行空间压缩 * max length of the subarray sum = k * @param arr int整型一维数组 the array * @param k int整型 target *

2021-06-07 17:08:52 263

原创 矩阵最长递增路径 (记忆化的递归搜索,动态规划)

牛客NC138 矩阵最长递增路径leetcode329 矩阵中的最长递增路径记忆化的深度优先遍历每个点的最长递增路径是确定,因此我们可以记录每个点的最长递增路径的长度,下一次访问到该点时就直接返回路径长度即可。会不会出现路径重复的情况(如下图的情况)呢?很明显是不会的,因为路径是递增的,这种情况会破坏路径的递增关系。 private int[][] dirs = new int[][]{{1, 0}, {0, -1}, {-1, 0}, {0, 1}}; private in

2021-06-02 13:40:47 245

原创 股票交易的最大收益(二)(两次交易,动态规划)

牛客NC135股票交易的最大收益(二)import java.util.*;public class Solution { /** * 动态规划, * dp[i][0],直到第i天第一次买入的最大收益 * dp[i][1],直到第i天第一次卖出的最大收益 * dp[i][2],直到第i天第二次买入的最大收益 * dp[i][3],直到第i天第二次卖出的最大收益 * 买入就减收益,卖出

2021-06-02 11:11:41 926

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除