我成功地解決了Hackerrank上的一個問題,它通過了所有的測試用例,但是我得到了一個超出時間限制的錯誤。我猜如果我優化我的代碼,它會工作,但我想不出任何方法使我的代碼更有效率。超過Hackerrank的時間限制
現在的問題是: 大小爲n的數組的左旋轉操作會將陣列的每個元素向左移動1個單位。例如,如果在數組[1,2,3,4,5]上執行2次左旋轉,則數組將變爲[3,4,5,1,2]。
給定一個n個整數和一個數字d的數組,在數組上執行d左旋。然後將更新後的數組作爲一行空格分隔的整數。
任何人都可以請指導我如何使此代碼更有效?
我的代碼是:
vector<int> array_left_rotation(vector<int> a, int n, int k) {
for (int j = 0; j < k; j++){
a[n] = a[0];
for (int i = 0; i < n; i++){
a[i] = a[i+1];
}
a[n-1] = a[n];
}
return a;
}
n是在陣列 k個元素的數量將要執行
使用[ ? – NathanOliver
請在此處不要詢問關於在線代碼判斷引擎的問題。任何人都不可能告訴你自己的測試用例失敗,因爲這些通常都沒有披露。即使您測試的是在您的本地環境中運行,您可能錯過了測試在線挑戰中應用的一些邊緣案例。有創意並嘗試找到它們。此外,長期來看,這些問題可能沒有任何價值,除了欺騙在線競賽之外,沒有任何東西可以學到。 –
那麼你怎麼打印數組從'd'到'n',然後從'0'到'd',所以你實際上不需要旋轉任何東西? – nwp