1 回答

TA貢獻1802條經驗 獲得超5個贊
簡單的答案是你的代碼太慢了。為什么這很重要?
您在其他人的服務器上運行代碼,因此您可以執行的操作受到限制;隨意浪費服務器資源會讓其他人的體驗變得更糟,并增加主機的成本。
您正在進行編程練習,以測試您編寫正確、高性能代碼的能力。時間限制是你應該解決的問題的一部分:)
注意問題中定義的約束:
1≤T≤200
1≤N≤10E7
1 ≤ arr[i] ≤ 1000
每個數組的長度最多可達 1000 萬個元素。這是大量的 int 解析和字符串連接、大量的分配等。
您可以嘗試如何改進您的代碼?
避免解析相同的數字兩次 - 您總是解析數組的每個元素兩次,這是不必要的成本。
嘗試使用
StringBuilder
構建輸出字符串而不是單獨Console.Write
調用;StringBuilder
通過一次調用寫入整個內容Console.WriteLine
,并清除以StringBuilder
在下一次迭代中使用(避免必須一遍又一遍地分配另一個大字符串)。您可以編寫自己的整數解析器,而不是使用
Split
andint.Parse
,該解析器可以逐字符讀取輸入數據,而無需始終創建新字符串。您擁有的輸入數據受到很好的限制,因此編寫解析器幾乎是微不足道的。根據執行環境,可能值得將數據從輸入直接流式傳輸到輸出,而無需中間字符串(這本質上與第 2 點相反。),理想情況下同時緩沖輸入和輸出,這樣您就不必處理字符串太大(再次記住,數組可以有一千萬個元素,這是一個非常長的字符串?。?/p>
祝你成功完成挑戰!:)
- 1 回答
- 0 關注
- 145 瀏覽
添加回答
舉報