笔试题

待我称王封你为后i 2022-07-16 10:44 395阅读 0赞

输入一个数组大小n,步长r和数组a,

做一个操作,使得b[i]=MED(a[i], a[i+1]modn, … a[i+r-1]modn),MED方法是返回数组排序后的中值(偶数个数的话,返回较大的那个中间值),用b[i]更新a[i],

最后 a中的各个元素都相同之后,返回a中的元素。

哎,通过了60%:

  1. package com.yuxin.learn;
  2. import java.util.*;
  3. public class Main {
  4. public static void main(String[] args){
  5. Scanner in = new Scanner(System.in);
  6. int n=in.nextInt();
  7. int r=in.nextInt();
  8. int[] a=new int[n];
  9. for(int i=0;i<n;i++){
  10. a[i]=in.nextInt();
  11. }
  12. int[] b=a;
  13. while(endLoop(a)==false){
  14. for(int i=0;i<n;i++){
  15. b[i]=MED(a,n,i,r);
  16. }
  17. for(int i=0;i<n;i++){
  18. a[i]=b[i];
  19. }
  20. r++;
  21. }
  22. System.out.println(a[0]);
  23. }
  24. private static int MED(int[] a,int n, int i,int r) {
  25. int[] temp = new int[r];
  26. for(int k=0;k<r;k++){
  27. int tempindex=i+k;
  28. if(tempindex>=n)tempindex=tempindex%n;
  29. temp[k]=a[tempindex];
  30. }
  31. Arrays.sort(temp);
  32. return temp[temp.length/2];
  33. }
  34. private static boolean endLoop(int[] a) {
  35. int sum=0;
  36. for(int i=1;i<a.length;i++){
  37. if(a[i]!=a[0])sum++;
  38. }
  39. if(sum==0)
  40. return true;
  41. else return false;
  42. }
  43. }

发表评论

表情:
评论列表 (有 0 条评论,395人围观)

还没有评论,来说两句吧...

相关阅读

    相关 试题

    1、写出几种常见的设计模式,并详细列举出一种。 单例设计模式,工厂设计模式,适配器设计模式,模板设计模式,装饰设计模式 2、描述下tcp接收数据的过程。 1:建立服务器端

    相关 面试试题

     1.写一个函数,返回一个字符串中只出现一次的第一个字符      [第一个只出现一次的字符(包含代码-C++)][-C]     (1)用查找子串的方式,每次遍历一

    相关 试题

    最近做了一些公司的笔试题,将所记部分整理一下。 1、查询该目录及子目录下所有的以.conf为后缀的文件:find . -name “\.conf”由此题扩展到linux的指

    相关 试题

    搜狗2017年校招笔试编程题题目: 在一个圆形上的若干点,点的位置以角度的形式表示,(0-360),输入若干的点的位置,点的距离以劣弧对应角度表示,求距离最远的两个点的角

    相关 华为试题

    今天,帮同学看了到华为的笔试题,题目如下: 举办一场8小时的聚会,时间段从12:00到20:00点,让来访的客人事先填好到达的时间和离开的时间,为了掌握聚会期间的座位数目,需