题目描述:
例子:
代码:
方法1:列子能跑,leetcode没跑过,超时。
public static List<Integer> goodDaysToRobBank(int[] security, int time) {
List<Integer> list=new ArrayList<>();
for(int i=0;i<security.length;i++){
//判断下标是否符合要求
if((i-time)<0 || i+time>security.length-1){
continue;
}
int count=0;
for(int j=i-time;j<i;j++){
if(security[j]>=security[j+1]){
count++;
}
}
int count2=0;
for(int k=i+time;k>i;k--){
if(security[k]>=security[k-1]){
count2++;
}
}
if(count==(time) && count2==(time)){
list.add(i);
}
}
return list;
}
方法2:动态规划
List<Integer> list=new ArrayList<>();
int n=security.length;
int [] left=new int[n];
int [] right=new int[n];
for(int i=1;i<n;i++){
if(security[i]<=security[i-1]){
left[i]=left[i-1]+1;
}
if(security[n-i-1]<=security[n-i]){
right[n-i-1]=right[n-i]+1;
}
}
for(int i=0;i<n;i++){
if(left[i]>=time && right[i]>=time){
list.add(i);
}
}
return list;