我在考試中遇到過問題。給出一組重複數字,請如何刪除一個重複數字以獲得最大值。 例如: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. 從數組中刪除重複的值
- 4. 從C中的數組中刪除重複的字/字符串
- 5. 從數組中刪除重複的數字,並在C++
- 6. 如何從非重複數組中刪除數字?
- 7. 如何獲得一個數組的重複數字部分
- 8. 若要查找整數數組中前3個最大重複數字
- 9. 如何從兩個數組中刪除重複的字符串?
- 10. 從兩個字符串數組中刪除重複項#
- 11. 從數組中刪除重複項,並增加一個值
- 12. 從C++中的數組中刪除重複的整數
- 13. 在一個函數中刪除重複的數組值PHP
- 14. Python從數組中刪除重複
- 15. 從數組中刪除重複
- 16. PHP從數組中刪除重複項
- 17. 從排序數組中刪除重複
- 18. 從數組列表中刪除重複的數組值
- 19. 從數據集中刪除重複值
- 20. 刪除重複數組項
- 21. 數組重複一個值
- 22. 從Int數組中刪除重複(重複)元素
- 23. 如何獲取數組中重複次數最少的數字?
- 24. 排列數組並刪除重複值
- 25. 數組合並和刪除重複值
- 26. 在Collatz序列獲得最後一個數字1重複
- 27. 組合兩個數組求和重複值並將它們除以重複數
- 28. 從排序的字符數組中刪除重複項
- 29. Java:如何從ArrayList中刪除重複的字符串數組?
- 30. 從數組中刪除重複的字符串
重複數字是否總是聚集在一起?那意味着你可以擁有321123這樣的號碼嗎? – user3437460
總是在一起 –