Kattis电话列表c#,超出时间限制

时间:2016-05-12 16:55:13

标签: c# kattis

我正在尝试解决Kattis上的Phone List problem

它的工作正常,但我无法通过第二个测试用例!它会因“超出时间限制”错误而停止。我见过没有工作解决方案的其他线程......

using System;
using System.Collections.Generic;
using System.Linq;

namespace PhoneList
{
    class Program
    {
        static void Main(string[] args)
        {
            long testCases = Int64.Parse(Console.ReadLine());
            for (int i = 0; i < testCases; i++)
            {
                List<string> phoneNumbers = new List<string>();
                long phoneNumbersCount = Int64.Parse(Console.ReadLine());
                for (int j = 0; j < phoneNumbersCount; j++)
                {
                    phoneNumbers.Add(Console.ReadLine().Trim());
                }
                var consistent = phoneNumbers.FirstOrDefault(t2 => phoneNumbers.Exists(t1 => t1.StartsWith(t2) && !t1.Equals(t2)));
                switch (consistent)
                {
                    case null:
                        Console.WriteLine("YES");
                        break;
                    default:
                        Console.WriteLine("NO");
                        break;
                }
            }
        }
    }
}

我已经多次重写了,但现在我停了下来。我不能为我的生活找出什么运行速度超过3秒的时间限制。由于测试数据是秘密的,我不知道Kattis有多少人进入......

更新

用以下代码替换LINQ查询:

            phoneNumbers.Sort();
            var consistent = true;
            for(int x = 1; x < phoneNumbers.Count; x++)
            {
                if (phoneNumbers[x].StartsWith(phoneNumbers[x - 1]))
                {
                    consistent = false;
                    break;
                }
            }

0 个答案:

没有答案