import java.util.HashMap;
public class exam3 {
public static void main(String [] args) {
HashMap<Integer, Integer> map=new HashMap<Integer,Integer>();
int k[]= {1,2,3,3,4};
int len=k.length;
int minIndex = minIndex(k);
map.put(minIndex, 1);
int index =left(minIndex, len);
while(map.keySet().size()!=len) {
int left1=left(index, len);
int right1=right(index, len);
if(k[left1]>=k[index]&&k[right1]>=k[index]) {
map.put(index, 1);
}else {
if(k[left1]>=k[index]&&k[index]>k[right1]) {
if(map.get(right1)!=null) {
map.put(index, map.get(right1)+1);
}
}else {
if(k[left1]<k[index]&&k[index]<=k[right1]) {
if(map.get(left1)!=null) {
map.put(index, map.get(left1)+1);
}
}else {
if(k[index]>k[left1]&&k[index]>k[right1]) {
if(map.get(left1)!=null&&map.get(right1)!=null) {
int max=map.get(left1)>map.get(right1)?map.get(left1)+1:map.get(right1)+1;
map.put(index, max);
}
}
}
}
}
//向左循环遍历
index=left1;
}
int count=0;
for(int i:map.values())
count+=i;
System.out.println(count);
}
public static int left(int index,int len) {
return (index+len-1)%len;
}
public static int right(int index,int len) {
return (index+1)%len;
}
/**
* 获取原始数组最小的数的位置
* @param k
* @return
*/
public static int minIndex(int k[]) {
int index =0;
int min=k[0];
int len=k.length;
for(int i=0;i<len;i++) {
if(min>k[i]) {
min=k[i];
index=i;
}
}
return index;
}
}
上午把题目理解错了,以为分数相等的时候,奖品应该也是一样的,下午重新做了一遍,不知道这样对不对。。。