我在考試中遇到過問題。給出一組重複數字,請如何刪除一個重複數字以獲得最大值。 例如:112233刪除任何一個數字,即:刪除一個1或一個2或一個3,並返回最大數量。如何有效地完成此操作。一個是強力。從整數重複數字組中刪除一個重複數字以獲得最大值
回答
從重複數字的組從整數中刪除一個重複的數字,以獲得最大
爲了保證最大的,我們請從左邊的最小重複的數字。我們不必執行暴力。
測試的112233:
12233 //remove 1 (remove smallest from left) [formed largest]
11233 //remove 2
11223 //remove 3
測試的332211:
33221 //remove 1 (remove smallest from left) [formed largest]
33211 //remove 2
32211 //remove 3
測試的221133:
22133 //remove 1 (remove smallest from left) [formed largest]
21133 //remove 2
22113 //remove 3
如果數字是12553664,該怎麼辦? 刪除5將導致1253664小於1255364(通過刪除6得到) – SyncMaster
您必須刪除第一個重複數字,後面跟着一個更大的數字。這樣可以增加可以增加的最有效數字,從而達到最大值。
你是對的。但是如果我們找不到這樣一個數字,那麼我們應該從右到左遍歷,找到第一個重複數字,然後是一個更小的數字。 – SyncMaster
從左到右遍歷。找到第一個重複的數字,後面跟着一個更大的數字。如果能找到一個,請將其刪除並返回該號碼(例如:122334)
從右向左遍歷。找到第一個重複的數字後跟一個較小的數字。如果你能找到一個,請將其刪除並返回該號碼。例如,在455233中,當我們從右到左遍歷時,'2'是一個較小的數字,後面跟着重複的數字'3'。
找到最後一個重複的數字,將其刪除並返回號碼(如:433221)
如果沒有重複數字,返回數字
幾個例子:
122334 - 在第1步中刪除。刪除2以獲得最大數字(12334)
455233 - 在第2步中落入。刪除2以獲得最大麻木ER(45533)
12553664 - 瀑布下2步。卸下6中拿到最大數(1255364)
433221 - 瀑布下步。卸下2中得到最大數(43321)
332211 - 在步驟3下落。刪除1以獲得最大數字(33221)
'從右向左遍歷。找到第一個重複的數字後跟一個較小的數字。如果你能找到一個,刪除它並返回數字'332211'的測試用例會給你'32211'而不是'33221'的正確輸出。 – user3437460
@ user3437460我想你誤解了我的邏輯。請記住,您正在從右向左移動。所以在332211的情況下,你不會找到一個重複的數字,後面跟着一個較小的數字(從右到左,而不是從左到右)。這將歸入第3步。 – SyncMaster
- 1. 刪除重複的字符數組從
- 2. 從重複數字的數組中刪除數字
- 3. 從C中的數組中刪除重複的字/字符串
- 4. 從數組中刪除重複的數字,並在C++
- 5. 從數組中刪除重複項,並增加一個值
- 6. 在一個函數中刪除重複的數組值PHP
- 7. 從排序數組中刪除重複
- 8. PHP從數組中刪除重複項
- 9. 從數組中刪除重複
- 10. 從數組列表中刪除重複的數組值
- 11. 從數據集中刪除重複值
- 12. 刪除數組中重複字符串的最佳方法
- 13. 排列數組並刪除重複值
- 14. 如何獲取數組中重複次數最少的數字?
- 15. 從數組中刪除重複的字符串
- 16. F# - 從字符數組中刪除後續重複項(無序)
- 17. 刪除數組中相同數字的重複
- 18. 刪除重複從字典
- 19. 計數並刪除重複數組
- 20. 整數值轉換爲字符重複
- 21. 比較Javascript數組中的數字以獲得最大數字
- 22. LINQ並從一個對象數組中刪除重複項
- 23. Python重複數據刪除記錄 - 重複數據刪除
- 24. 如何刪除整數數組中的重複項?使用Java
- 25. 刪除數組中的重複項
- 26. 刪除數組中的重複鍵
- 27. 刪除數組中的重複項
- 28. 刪除數組中的重複項
- 29. php刪除數組中的重複項
- 30. 從java中的整數數組中獲得最大和第二大的數字?
重複數字是否總是聚集在一起?那意味着你可以擁有321123這樣的號碼嗎? – user3437460
總是在一起 –