【问题标题】:Unable to pass all conditions on codechef problem TREE2无法通过 codechef 问题 TREE2 的所有条件
【发布时间】:2020-09-14 19:54:41
【问题描述】:

请有人检查并说明为什么此代码无法通过 80% 条件。

这个问题出现在 CodeChef 上,问题代码为 TREE2。这是初学者部分的问题。

有 2 个任务。使用以下代码,我能够通过 20% 的任务,但我无法通过包含 80% 的第二个任务。

请查看并提出问题所在。

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Codechef
{
    public static void main (String[] args) throws java.lang.Exception
    {
        int t,n,h;
        Scanner s=new Scanner(System.in);
        t=s.nextInt();
        while(t-- > 0)
        {   h=0;
            n=s.nextInt();
            int [] arr=new int [n];
            
            for(int i=0;i<n;i++)
                arr[i]=s.nextInt();
            Arrays.sort(arr);
            
            while(true)
            {
                if(arr[n-1]==0)
                break;
                h++;
                if(arr[0]==arr[n-1])
                    break;
                    
                for(int i=n-2;i>=0;i--)
                {
                    if(arr[i]!=arr[n-1])
                    {
                        for(int j=i;j<n;j++)
                            arr[j]=arr[i];
                        break;
                    }
                }
                
            }
            System.out.println(h);
        }
        
    }
}

【问题讨论】:

  • 您好,欢迎您。我认为如果我们在比赛中给你帮助是不公平的。如果您需要任何与编程或特定问题相关的一般帮助,请随时回来。在处理这些问题时,我想到的一些事情是:时间不足、内存或变量溢出。

标签: java arrays logic


【解决方案1】:

时间复杂度的原因。 您正在使用 4 个循环。 这导致 n 提高到 4 时间复杂度。 尝试仅使用一个循环或不使用循环来解决。 提示通过 SET 概念

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 2016-06-04
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    相关资源
    最近更新 更多