Leetcode825. 适龄的朋友
题目描述
825. 适龄的朋友
题解
根据题目的约束的出 0.5x+7 <= y <= x ,对于y来说需要寻找符合的范围边界。参考下图:
因为随着age[x]增长,则age[y]的边界也会基于前面的基础上向右扩张,所以我们可以先加age排序,则通过age查找边界的时间复杂度为O(n)
每一个age[x]的贡献是边界内的元素个数,因此遍历数组ages,不断移动左右边界指针,找到满足条件的区间,算出每个区间的贡献。
代码参考:
123456789101112131415161718192021222324252627282930313233343536class Solution { // age[y] <= 0.5 * age[x] + 7 // age[y] > age[x] // age[y] > 100 && age[x] < 100 // y<= x <= 2y -14 public int numFriendReq ...
Leetcode1078.Bigram 分词
题目描述
1078. Bigram 分词
题解
此题是一道简单的字符串匹配题,遍历text字符串,当 first 和 second 都符合条件则添加后一个字符串
代码参考:
123456789101112131415161718192021class Solution { public String[] findOcurrences(String text, String first, String second) { //临界条件 if (text == null || text.length() == 0 || first == null || second == null || first.length() == 0 || second.length() == 0) { return new String[0]; } String[] textArray = text.split(" "); i ...
Leetcode198. 打家劫舍
题目描述
198. 打家劫舍
题解
此题为经典的线性DP题目,DP题目,目前dp题目主要为以下几个步骤分析:
状态定义
转移方程
初始状态
返回值
状态定义
动态规划列表dp , dp[i]表示前 i 个房子在满足条件能偷窃到的最高金额,当前房子的价值为 num
转移方程
假设有 N 个房间,前 N 间能偷窃到的最高金额是 dp[n] , 前 N-1间房子能偷窃到的最高金额为dp[n-1],一个房间只会存在两个情况 , 1 被偷 , 0 没被偷 ,下面我们各自分析一下。
房间被偷
假设第 N 间房子被偷,由于相邻的房子不能被偷则 dp[N-1]不能被偷,由于房间的价值都是正值,偷得房间越多则价值更大,所以当N间被偷,dp[N-2]可偷 , 所以则 dp[N] = max(dp[N-1],dp[N-2]+num)
房间没被偷
假设第 N 间房子没被偷则 dp[N] = dp[N-1]
合并两种情况转移方程为 dp[N] = max(dp[N-1],dp[N-2]+num)
初始状态
当N=0 没有房子则价值为 0 ,dp[0]=0
当N=1 只有一间房子 则 dp[1] = ...
Leetcode2062. 统计字符串中的元音子字符串
题目描述
2062. 统计字符串中的元音子字符串
题解
此题是一道简单的字符串匹配题,1.暴力求解 2.滑动窗口(待补充)
代码参考:
暴力求解
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051class Solution { public int countVowelSubstrings(String word) { //1.字符串子串问题,暴力枚举 if (word.length() < 5) { return 0; } int len = word.length(); int count = 0; for (int i = 0; i < len; i++) { int num = ...
Leetcode1609. 奇偶树
题目描述
1609. 奇偶树
题解
此题为简单的BFS ,在二叉树的层级遍历的基础上多加了一个奇偶性的条件判断。
代码参考
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172class Solution { public boolean isEvenOddTree(TreeNode root) { //1.BFS , 层级遍历 if (root == null) { return false; } if (root.right == null && root.left == null) { if (root.val % 2 == 0) { ...
Leetcode1705.吃苹果的最大数目
题目描述
1705. 吃苹果的最大数目
题解
第一直觉是贪心,主要是找出贪心策略 。 因苹果过期后会腐烂,所以优先吃掉最近要过期的苹果会是最优解。
通过优先队列来维护苹果过期最小堆。
令 n为数组长度,time 为当前时间 , res 为吃到的苹果数量
如果 time < n 且 堆不为空 说明还有苹果未生成 或者 未吃掉
当 time < n 则将苹果的过期日期及数量加入最小堆中
先剔除已过期的苹果,在取出堆顶的苹果,若还有剩余则重新 入队
重复以上逻辑知道所有的苹果出队
代码参考:
123456789101112131415161718192021222324252627282930313233343536class Solution { public int eatenApples(int[] apples, int[] days) { //1.贪心策略,每次吃掉快过期的苹果 (重点,直觉上来看是贪心,但是要把握贪心的策略) // 贪心 + 优先队列 ...
腾讯云kubeadm部署k8s v1.22.4版本
最近用k8s搭建自己的云工作环境,便在腾讯云购买两台服务器来部署,以下是k8s集群部署过程,欢迎大家参考。
环境说明
云服务器:腾讯云
操作系统:centos 7.8
kubeadm k8s 版本:v1.22.4
docker版本: 20.10.11
云服务器:172.17.0.17 hjforever-master (单节点) 172.17.0.15 hjforever-node1 (工作节点)
系统环境准备
每个节点的环境准备都需要执行
修改云服务器节点的host及hostname
12345hostnamectl set-hostname hjforever-masterhostnamectl set-hostname hjforever-node1vi /etc/hosts172.17.0.15 hjforever-node1172.17.0.17 hjforever-master
关闭防火墙 firewalld 和 selinux
1234systemctl stop firewalldsystemctl disable firewalldsed -i ' ...
centos 7 安装nodejs
安装nodejs
1yum install nodejs
安装完成后,验证是否正确的安装,node -v,如果输出如下版本信息,说明成功安装
v6.13.3
升级nodejs
现在nodejs发的版本比较快,有些需要新版本或者其他版本的nodejs ,此处通过安装nodejs管理工具来升级及切换版本。
安装 n
n是nodejs管理工具,是TJ写的,Github: https://github.com/tj/n
1npm install -g n
安装 nodejs 版本
安装最新版本
1n latest
安装指定版本
1n 17.2.0
切换版本
12 node/10.4.1o node/17.2.0
查看当前版本 node -v 若一致则表示成功
1n 17.2.0
安装完或者切换后,查看版本还是原来的v6.13.3,则需要以下方式来解决。
切换失效解决方法
修改环境配置文件,将node路径切换到n上面来
1vim ~/.bash_profile
将下面两行代码插入到文件末尾然后保存
12export N_PREFIX=/usr/local #node实际安装位置expo ...
Typora +Hexo博客处理图片问题
最近使用hexo重新搭建了博客,而hexo写博客是用markdown语法,自己工作也经常用,所以一般都是用typora这款工具(神器)来写。typora本身也支持图片插入,且可以自定义图片插入位置,这有效的解决了图片在hexo中的位置和本地自己打开文章后图片也会要显示出来的难题。具体步骤如下。
hexo博客中,博客文件会保存到 source/_posts / 目录中
设置Typora图片保存的位置
首先在 hexo > source目录下建一个文件夹叫images,用来保存博客中的图片。然后打开Typora的文件菜单栏的偏好设置,找到图像将图片复制到这个 …/…/source/images/$(filename) 路径下,具体参考下图
设置图片相对目录
上面的步骤是设置typora上传图片的相对位置即相对于文章的位置,但是hexo生成html后路径是不一样的,因此还需要在typora中进行进一步设置。打开typora菜单栏点击 格式->图像->设置图片文件根目录 ,将source作为其根目录即可。
设置好之后再点击操作会取消设置。
spring boot http2
HTTP/2是第二代的HTTP协议 , 具体就不多说,协议参考 HTTP/2 ,中文翻译版参考HTTP/2中文翻译
环境配置
JDK8
undowtow 1.4.0+
spring boot 2
之所以用 undowtow 而不用 tomcat或jetty 是因为JDK8是不支持HTTP/2 , JDK9支持,而undowtow 1.4.0+服务器用JDK8 就可以支持HTTP/2。若用tomcat或jetty则需要额外加载 ALPN 具体参考springboot官方文档
生成证书
HTTP/2 支持明文 HTTP 传输,但是目前浏览器只会实现基于TLS的HTTP/2,要想升级成HTTP/2首先升级HTTPS ,考虑到协议证书都需要花钱而免费的协议证书(如:Let’s Encrypt ,StartSSL)申请比较麻烦。这里我们由jdk自带的keytool工具生成自签证书。在jdk bin 目录下执行命令
1keytool -genkey -alias hjforever -storetype PKCS12 -keyalg RSA -keypass 123456 -keys ...