关于"约翰尼叔叔" CodeChef上的problem_

时间:2015-12-31 10:51:37

标签: java arrays string int binary-search

Uncle Johny

上存在练习问题www.codechef.com

作为一个冗长的人,我提供了这个链接。

https://www.codechef.com/problems/JOHNY/

我有两个解决方案(代码1和代码2)

代码1

class UncleJohny
{
    public static void main(String args[]) throws IOException
    {
        BufferedReader br = new BufferedReader(newInputStreamReader(System.in));
        PrintWriter pw = new PrintWriter(System.out);

        int test_case = Integer.parseInt(br.readLine());

        while(test_case-- > 0)
        {
            int n = Integer.parseInt(br.readLine());

            int i = 0;

            String a[] = br.readLine().split(" ");   //Mind this line

            int k = Integer.parseInt(br.readLine());

            String temp = a[k - 1];

            Arrays.sort(a);

            pw.println(Arrays.binarySearch(a, temp) + 1);
        }

        pw.flush();
    }
}

代码2

class UncleJohny
{
    public static void main(String args[]) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter pw = new PrintWriter(System.out);

        int test_case = Integer.parseInt(br.readLine());

        while(test_case-- > 0)
        {
            int n = Integer.parseInt(br.readLine());

            int a[] = new int[n];

            int i = 0;

            for(String str: br.readLine().split(" "))
            {
                a[i++] = Integer.parseInt(str);     //Mind this line
            }

            int k = Integer.parseInt(br.readLine());

            int temp = a[k - 1];

            Arrays.sort(a);

            pw.println(Arrays.binarySearch(a, temp) + 1);
        }

        pw.flush();
    }
} 

上述代码中的基本任务是在排序后找到输入数组tempa的值索引

据我所知,这两个代码的输出没有任何区别。 (如果我错了,请纠正我)

CodeChef正在接受Code 2,但对Code 1

错误答案

我的查询究竟是什么?

尽管相同,但为什么code 2被接受而code 1不被接受?

为什么我需要将输入值存储在int数组中(如代码2所示),而不是将它们存储到String数组中(如代码1所示),以便得到我的答案接受?

1 个答案:

答案 0 :(得分:3)

整数的排序顺序与字符串的排序顺序不同。例如。 “1”< “10”< “2”......