public int kIncreasing(int[] arr, int k) {
int ans = 0;
int n = arr.length;
for (int i = 0; i < k; i++) {
int maxLen = 0;
List<Integer> list = new ArrayList<>();
for (int j = i; j < n; j+=k) {
if (list.isEmpty() || arr[j] >= list.get(list.size() -1)) {
list.add(arr[j]);
maxLen = Math.max(list.size(), maxLen);
}else{
int index = binarySearch(list, arr[j]);
list.set(index, arr[j]);
maxLen = Math.max(maxLen, index + 1);
}
}
int dif = ((n - i -1) / k + 1) - maxLen;
ans += dif;
}
return ans;
}
public int binarySearch(List<Integer> list, int target) {
int l = 0;
int r = list.size() -1;
while (l < r) {
int mid = l + (r - l) / 2;
if (list.get(mid) <= target) {
l = mid + 1;
}else{
r = mid;
}
}
return l;
}
lc-2111
原创
©著作权归作者所有:来自51CTO博客作者wx5be5864e766ab的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
HDOJ2111(Saving HDU)(贪心)
Saving
#include java i++ -
HDOJ2111 Saving HDU(背包问题)
题目链接:Saving HDU
HDOJ java 航电acm 背包问题 i++ -
【杭电】[2111]Saving HDU
本来想着运用动态规划 不过这一题直接排序貌...
#include i++ 动态规划 背包问题 ZOJ -
FZOJ2111:Min Number
Problem DescriptionNow you are given one non-negative integer n in 10-base notation, it will only contain digits ('0'-'9'). You are allowed to choose 2 integers i and j, such that: i!=j, 1≤i#include int main(){ int n,i,j,len,l,MIN,flag,ss; char str[1005],min_c,t; scanf("%d"
#include git i++ 数值 题解 学习笔记 编程语言