Код C# слишком неэффективен, вызывая тайм-аут на hackerrank
Эй Ребята,
У меня было немного свободного времени, поэтому я выполнял задачу кодирования от HackerRank, и на 8-й день этой задачи, как бы я ни старался, я не мог заставить код работать более эффективно, так как некоторые тестовые случаи всегда "тайм-аут".
Если вы, ребята, могли бы уделить 2 минуты, глядя на мой код и видя, где он неэффективен, пожалуйста, дайте мне знать :)
В основном, в первом цикле for я читаю в парах ключ-значение, во втором цикле for я читаю в потенциальных ключах, если они имеют значение, то выводите ключ=значение, иначе выводите "не найдено". переменная "n"говорит мне, сколько пар значений ключей я читаю и сколько потенциальных ключей я читаю.
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Collections; class Solution { static void Main(String[] args) { /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution */ int n = int.Parse(Console.ReadLine()); string Word1 = ""; Dictionary<string, int> list = new Dictionary<string, int>(); for(int i = 0; i <n; i++) { Word1 = Console.ReadLine(); string[] array = Word1.Split(null); list.Add(array[0], int.Parse(array[1])); } for(int i = 0; i<n; i++) { Word1 = Console.ReadLine(); if(list.ContainsKey(Word1)) { var keyValuePair = list.Single(x => x.Key == Word1); Console.WriteLine(Word1 + "=" + keyValuePair.Value); } else { Console.WriteLine("Not found"); } } } }
Что я уже пробовал:
Это решение определенно более эффективно, чем мое первое, где я использовал циклы foreach... но я не знаю ничего в этом случае, что было бы быстрее, чем LINQ
NotPolitcallyCorrect
LINQ != быстрее
Patrice T
"проблема кодирования от HackerRank" не очевидна для всех, так как не все зарегистрированы на этом сайте.
Можете ли вы сказать нам, в чем заключается это требование?
Member 11169882
В принципе, вы должны написать код, основанный на определенных входах и ожидаемых выходах. Проблема в том, что некоторые тестовые случаи огромны со 100 входными данными. Поэтому, хотя некоторые тестовые случаи проходят, не все могут, потому что в больших тестовых случаях происходит тайм-аут
Patrice T
Можете ли вы скопировать точное требование?
Я уверен, что детали имеют значение.