如果有int j = Integer.MAX_VALUE
和int k = Integer.MAX_VALUE
如何計算平均值(j + k)/ 2以便不會導致溢出。當堆棧中存在溢出時,取整數(j + k)/ 2的平均值
回答
(j/2) + (k/2) + ((j%2) && (k%2))
((j%2)& &(K%2))是迎合爲奇數的情況。如果J,K = 1,則j/2 + K/2只會給你0
這是因爲0.5將地板到0
感謝您的更正,但您的代碼無法編譯。請參閱我的回答 –
您究竟會如何編碼@bilalba。我想我明白你想說什麼,但我不太清楚'+(j%2 && k%2)'是什麼意思,因爲@Scary Wombat說,代碼不會編譯 – Kekis2014
@ Kekis2014我已經對我的答案進行了修正,正確的代碼應該是'(j/2)+(k/2)+(j%2 & k%2);'這只是一個'&' –
你可以寫入下一個最小整數,(j/2) + (k/2)
。以下是使用典型方法的兩個小數字10
和11
的示例。
10 + 11 = 21
21/2 = 10.5
現在的其他方式:
10/2 = 5;
11/2 = 5.5;
5.5+5 = 10.5;
正如你可以在這裏看到,無論哪種方式,你會得到相同的結果,但你不會有增加的數字,因爲這會導致溢出如你所說。
編輯
我才意識到這是錯誤的,只會偶數號的工作。這是最佳解決方案(適用於所有數字)。
(j/2) + (k/2) + (j%2 && k%2);
j + (i - j)/2
相當於(i + j)/2
和將在這種情況下不會溢出(當數之間差小)。在這種表達式溢出的情況下,(i + j)/2
不會。
- 1. 大整數堆棧溢出
- 2. 堆棧溢出堆棧溢出
- 3. 堆棧溢出C++
- 4. 堆棧溢出時,申報2陣列
- 5. 平均堆棧2的實現
- 6. 獲取整數大小時堆棧溢出錯誤?
- 7. 平均堆棧 - 數據
- 8. 在SSL上運行平均值堆棧
- 9. 堆棧溢出
- 10. 當聲明一個大型數組時,堆棧/堆溢出
- 11. MemoryError:python中的堆棧溢出
- 12. 項目歐拉:#14整數溢出和堆棧溢出
- 13. 堆棧溢出(參數:0x00000001,0x00442FF8)
- 14. java堆棧溢出錯誤?
- 15. 堆棧溢出:: regex_replace
- 16. freertos中的堆棧溢出
- 17. Jboss中的堆棧溢出
- 18. Prolog中的堆棧溢出
- 19. 堆棧溢出中的SAML?
- 20. ViewDragHelper堆棧溢出
- 21. MPMoviePlayerController堆棧溢出
- 22. 遞歸函數haskell堆棧溢出
- 23. DLL文件堆棧溢出
- 24. .NET堆棧溢出?
- 25. GinMapProvider堆棧溢出
- 26. Lua堆棧溢出
- 27. C++堆棧溢出
- 28. LINQ2SQL堆棧溢出
- 29. 堆棧溢出ToArray()
- 30. Threading.Timer堆棧溢出
與(j/2)+(k/2)相同 –
@ScaryWombat你可以發表該答案而不是評論,因此我可以將其標記爲正確的答案?謝謝! – Kekis2014
如果您達到'Integer.MAX_VALUE',只使用long是不是更好? – Gendarme