1 | 给你一个整数数组 nums 和一个正整数 k ,返回长度为 k 且最具 竞争力 的 nums 子序列。 |
维护一个单调栈(如果当前的元素小于栈顶元素,则将栈中大于当前元素的所有元素出栈,将当前元素入栈)
这里需要对单调栈进行一下修改,因为最多只能删除n-k个元素,要剩下至少k个元素,如果当前队列中的元素已经删除了n-k个,那么往后就不能出栈,只能入栈元素。
1 | class Solution { |
1 | 给你一个整数数组 nums 和一个正整数 k ,返回长度为 k 且最具 竞争力 的 nums 子序列。 |
维护一个单调栈(如果当前的元素小于栈顶元素,则将栈中大于当前元素的所有元素出栈,将当前元素入栈)
这里需要对单调栈进行一下修改,因为最多只能删除n-k个元素,要剩下至少k个元素,如果当前队列中的元素已经删除了n-k个,那么往后就不能出栈,只能入栈元素。
1 | class Solution { |
对于 Java来说,由于字符串是不可变的,因此在连接时首先为新字符串分配足够的空间,复制旧字符串中的内容并附加到新字符串。
因此,总时间复杂度将是:
$5+5×2+5×3+…+5×n=5×(1+2+3+…+n)=5×n×(n+1)/2 即O(N^2)。$
针对 Java 中出现的此问题,我们提供了以下解决方案:
如果你确实希望你的字符串是可变的,则可以使用 toCharArray 将其转换为字符数组。
如果你经常必须连接字符串,最好使用一些其他的数据结构,如 StringBuilder 。
1 | 作者:力扣 (LeetCode) |
1 | 在由 1 x 1 方格组成的 N x N 网格 grid 中,每个 1 x 1 方块由 /、\ 或空格构成。这些字符会将方块划分为一些共边的区域。 |
1 | class Solution { |
1 | class Solution { |
难度中等30收藏分享切换为英文接收动态反馈
给你一个二维矩阵 matrix
和一个整数 k
,矩阵大小为 m x n
由非负整数组成。
矩阵中坐标 (a, b)
的 值 可由对所有满足 0 <= i <= a < m
且 0 <= j <= b < n
的元素 matrix[i][j]
(下标从 0 开始计数)执行异或运算得到。
请你找出 matrix
的所有坐标中第 k
大的值(k
的值从 1 开始计数)。
示例 1:
1 | 输入:matrix = [[5,2],[1,6]], k = 1 |
示例 2:
1 | 输入:matrix = [[5,2],[1,6]], k = 2 |
示例 3:
1 | 输入:matrix = [[5,2],[1,6]], k = 3 |
示例 4:
1 | 输入:matrix = [[5,2],[1,6]], k = 4 |
提示:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 1000
0 <= matrix[i][j] <= 106
1 <= k <= m * n
矩阵中坐标为 $(i,j)$ 的数字由以 $(0,0)$ 为左上角到 $(i,j)$ 为右下角的矩形区域的所有数字异或得到的
可以通过一个数组临时保存计算结果从而加速计算过程,
1 | dp(i,j)=dp(i-1,j) ^ dp(i,j-1) ^ dp(i-1,j-1) ^ maxtrix(i,j) |
使用小根堆保存中间结果,最后输出对应的数字
1 | class Solution { |
1 | 给你两个字符串 a 和 b ,二者均由小写字母组成。一步操作中,你可以将 a 或 b 中的 任一字符 改变为 任一小写字母 。 |
使用前缀和统计字符串中小于某个字母的数字的数目
然后暴力遍历i,将a中的a+’i’左边的字母移到右边,b中a+’i’右边的字母移到左边,记录每个i需要移动的字母的数量
然后暴力遍历i,将b中的a+’i’左边的字母移到右边,a中a+’i’右边的字母移到左边,记录每个i需要移动的字母的数量
还要遍历i,将a中的字母都变成a+’i’记录最小数量
然后三个取最小
1 | class Solution { |
1 | 给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。 |
1 | class Solution { |
1 | class Solution { |
难度中等48
给你一个整数数组 perm
,它是前 n
个正整数的排列,且 n
是个 奇数 。
它被加密成另一个长度为 n - 1
的整数数组 encoded
,满足 encoded[i] = perm[i] XOR perm[i + 1]
。比方说,如果 perm = [1,3,2]
,那么 encoded = [2,1]
。
给你 encoded
数组,请你返回原始数组 perm
。题目保证答案存在且唯一。
示例 1:
1 | 输入:encoded = [3,1] |
示例 2:
1 | 输入:encoded = [6,5,4,6] |
提示:
3 <= n < 105
n
是奇数。encoded.length == n - 1
1 | 原始数字:a,b,c,d,e,f,g |
1 | class Solution { |
1 | class Solution { |
参考文献
1 | 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。 |
1 | class Solution { |
1 | 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 |
1 | /** |
1 | class Solution { |
1 | class Solution { |
因为:
$pre[i]−pre[j−1]==k$
移项
$pre[j−1]==pre[i]−k$
只需要计算pre[i]-k,然后查找哈希表中有没有pre[j-1]就可以统计出结果
1 | public class Solution { |
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true