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

相关推荐

King987:待优化的地方还是挺多的,可以参考一下我的作品优化一下,优化不好的话也可以找我
点赞 评论 收藏
分享
02-07 10:52
复旦大学 Java
混子不想混:非常能理解,感觉他们就靠着入行早,打压新人一样。我这个公司也是,天天干的累死累活,然后绩效打C,合着让新人被绩效,像是年底攒棺材本一样。总是打击之后,还会让人开始自我怀疑,是不是我努力的还不够,实际上并不是,就是他们不做人,故意打压新人。
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务