首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >采访街中位挑战

采访街中位挑战
EN

Code Review用户
提问于 2012-10-24 10:31:46
回答 1查看 840关注 0票数 1

我试图解决Interviewstreet.com的中位挑战。

我无法通过大多数测试用例。但根据我的理解,我的代码应该能正常工作。

以下是问题:https://www.interviewstreet.com/challenges/dashboard/#problem/4fcf919f11817

这是我的代码:

代码语言:javascript
复制
    /* Sample program illustrating input and output */

    import java.util.*;

    class Solution{
public static void main( String args[] ){

     // helpers for input/output        

    Scanner in = new Scanner(System.in);

    int N;
    N = in.nextInt();

    String s[] = new String[N];
    int x[] = new int[N];
    ArrayList<Integer> items=new ArrayList<Integer>();
    float result[]=new float[N];
    //int itemindex=-1;
    for(int i=0; i<N; i++){
        s[i] = in.next();
        x[i] = in.nextInt();

        switch(s[i].charAt(0))
        {

        case 'r':
            if(items.size()<=1)
            {
                result[i]=-1;

            }
            else
            {
                items.remove((Integer)x[i]);
                int itemindex=items.size();
                Collections.sort(items);
                if((itemindex)%2==0)
                {
                    result[i]=(float)         ((items.get((itemindex/2))+items.get(((itemindex)/2)-1))/2.0);


                }
                else
                {
                    result[i]=items.get((itemindex-1)/2);
                }

            }
            break;

        case 'a':
            items.add(x[i]);
            int itemindex=items.size();
            Collections.sort(items);
            if((itemindex)%2==0)
            {
                result[i]=(float)((items.get((itemindex/2))+items.get(((itemindex)/2)-1))/2.0);


            }
            else
            {
                result[i]=items.get((itemindex-1)/2);
            }

            break;



        }

    }

    for(int j=0;j<N;j++)
    {
        if(result[j]==-1)
        {
            System.out.println("Wrong!");
        }
        else
        {
            if((result[j]*10)%10==0)
            {
            System.out.println((int)(result[j]));
            }
            else
            {
                System.out.println(result[j]);
            }
        }

    }





}
    }

如果有人能帮我找出我的代码会失败的测试用例,我会非常感激的。

谢谢。

EN

回答 1

Code Review用户

发布于 2012-10-24 21:39:54

@palacsint提到的另一点是对象删除的检查:根据挑战:

如果操作被删除,并且x号不在列表中,则输出“错误!”单行

您的代码没有对此进行检查:下面是您拥有的内容:

代码语言:javascript
复制
if(items.size()<=1)
            {
              result[i]=-1;
            }
else .....

当列表有单个项目或为空时,您的标记错误。显然,这不是挑战所要求的。因此,您应该放弃这个"if“块,只检查列表中remove的返回值:

代码语言:javascript
复制
boolean ok= items.remove((Integer)x[i]);
if (!ok){
  result[i]=-1;
}
票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/17874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档