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;     } } 上午把题目理解错了,以为分数相等的时候,奖品应该也是一样的,下午重新做了一遍,不知道这样对不对。。。
点赞 评论

相关推荐

牛客网
牛客企业服务