lazyvim的java开发环境配置
1 | -- ~/.config/nvim/lua/plugins/java.lua |
1 | -- ~/.config/nvim/lua/plugins/dap.lua |
lazyExtras:
mason:

nvim目录树

1 | -- ~/.config/nvim/lua/plugins/java.lua |
1 | -- ~/.config/nvim/lua/plugins/dap.lua |


给定字符串
s1和s2,找出s1中最短的连续 子串,使得s2是该子串的 子序列 。
如果
s1中没有窗口可以包含s2中的所有字符,返回空字符串""。如果有不止一个最短长度的窗口,返回 开始位置最靠左 的那个。
1 | 输入: |
1 | 输入:s1 = "jmeqksfrsdcmsiwvaovztaqenprpvnbstl", s2 = "u" |
用滑动窗口去做,遍历 s1 串,如果 s2 到了末尾(p2 == l2),进行回溯寻找起点。
1 | class Solution { |
p2++,所以末尾的判断条件是 p2 == l2,而不是 p2 == l2 - 1,此时 p1 还没加 1,还在最后一个字符位置。p1 指向的位置是第一个字符的前一个位置,所以要加 1。min 变量,判断这个长度是不是最小的,如果是,就动态更新 res 的值。p1 的坐标进行了回溯,最后又加 1 了,所以下一次遍历是从 s1 的下一个字符开始的。s1 确实需要进行遍历,因为要找到最小的子串。在一条环路上有
n个加油站,其中第i个加油站有汽油gas[i]升。你有一辆油箱容量无限的的汽车,从第
i个加油站开往第i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组
gas和cost,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回-1。如果存在解,则 保证 它是 唯一 的。
1 | 输入: gas = [1,2,3,4,5], cost = [3,4,5,1,2] |
1 | 输入: gas = [2,3,4], cost = [3,4,3] |
这是一道贪心问题,用图的思路去解决,重点是利用数组前缀和,让亏损最严重的点最后走。
1 | class Solution { |
给定一个未排序的整数数组
nums, 返回最长递增子序列的个数 。注意 这个数列必须是 严格 递增的。
1 | 输入: [1,3,5,4,7] |
1 | 输入: [2,2,2,2,2] |
1 | class Solution { |
正常的求最长递增子序列是两层 for 循环、一个 dp 数组,求个数需要一个额外的 gp 数组,记录当下以 i 为结尾的最长子序列的个数,同时还要维护递增子序列最大值,最后遍历 gp 数组求和。