关注
package LeetCode.ByteDance;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @Author :FANG MIAO
* @Date :Created on 2020/2/5 15:26
* @Description:寻找前k个递增序列
* 输入:[2,1,4,5,8,3,7,10,2,5] k=2
* 输出:[1,4,5,8],[3,7,10]
*/
public class TopKLenArray {
public static List<List<Integer>> topKArray(int[] arr, int k) {
if (k == 0)
return new ArrayList<>();
int[] dp = new int[arr.length];
Arrays.fill(dp, 1);
for (int i = 1; i < arr.length; i++) {
if (arr[i] > arr[i - 1])
dp[i] = dp[i - 1] + 1;
}
List<List<Integer>> res = new ArrayList<>();
//找最大的前k个子数组
for (int i = 0; i < k; i++) {
//找当前最大值
int maxIndex = 0;
for (int j = 0; j < dp.length; j++) {
if (dp[j] > dp[maxIndex]) {
maxIndex = j;
}
}
int len = dp[maxIndex];//最长数组的长度
List<Integer> curArr = new ArrayList<>();
for (int j = maxIndex - len + 1; j <= maxIndex ; j++) {
curArr.add(arr[j]);
dp[j] = 1;//将这里重置,要不然后面的循环会有问题
}
res.add(new ArrayList<>(curArr));
}
return res;
}
public static void main(String[] args) {
int[] arr = {2,1,4,5,8,3,7,10,2,5};
List<List<Integer>> res = topKArray(arr, 2);
for (List<Integer> l:
res) {
for (int num:
l) {
System.out.print(num);
System.out.print(" ");
}
System.out.println();
}
}
}
楼主这题可以用dp哈。看来字节比较喜欢考dp和backtrack。 另外问一下楼主知道是哪里没有答好导致没通过吗? 谢谢~
查看原帖
2 8
相关推荐
2025-12-29 17:10
莆田学院 测试开发 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 今年春招是金一银二嘛? #
11002次浏览 134人参与
# 抛开难度不谈,你最想去哪家公司? #
6153次浏览 131人参与
# 赚钱的意义在这一刻具象化 #
5309次浏览 130人参与
# AI求职实录 #
5633次浏览 160人参与
# 没关系,至少我的__很曼妙 #
4639次浏览 83人参与
# 为什么有人零实习也能进大厂? #
6691次浏览 146人参与
# AI时代的工作 VS 传统时代的工作,有哪些不同? #
9738次浏览 227人参与
# 1月小结:你过的开心吗? #
2333次浏览 55人参与
# 你的第一家实习公司是什么档次? #
5378次浏览 79人参与
# 当你问AI“你会取代我的工作吗”,它说_? #
4662次浏览 156人参与
# 你的landing期是如何度过的? #
9997次浏览 194人参与
# 除了Java,最推荐学什么技术? #
7504次浏览 173人参与
# 牛客吐槽大会 #
4342次浏览 85人参与
# 机械人你知道哪些单休企业 #
83286次浏览 415人参与
# 你觉得什么岗位会被AI替代 #
37107次浏览 256人参与
# 秋招结束之后的日子 #
117177次浏览 1062人参与
# 机械人春招想让哪家公司来捞你? #
379519次浏览 3141人参与
# 你在职场上见过哪些“水货”同事 #
30902次浏览 168人参与
# 哪些瞬间让你真切感受到了工作的乐趣 #
23324次浏览 101人参与
# 实习想申请秋招offer,能不能argue薪资 #
215550次浏览 1163人参与