摘要:這道題有一些細節需要留意。新數會不會溢出符號位如何處理用慣用的做法,除以取余,得到最低位,放進。每次循環乘以累加當前最低位,同時除以不斷減小。要點在于考慮乘累加運算的情況,用分支語句判斷發生溢出的條件。最后的結果要加上之前排除的符號位。
Problem
Reverse digits of an integer. Returns 0 when the reversed integer overflows (signed 32-bit integer).
ExampleGiven x = 123, return 321
Given x = -123, return -321
Note這道題有一些細節需要留意。新數res會不會溢出?符號位如何處理?
用慣用的做法,n除以10取余,得到最低位cur,放進res。每次循環res乘以10累加當前最低位cur,同時n除以10不斷減小。
要點在于考慮res乘10累加運算的情況,用分支語句判斷發生溢出的條件。不能直接寫if (res * 10 + cur > Integer.MAX_VALUE),因為res * 10就有可能會溢出了;而要用(Integer.MAX_VALUE - cur) / 10,因為只有減法和除法,結果不可能溢出。
最后的結果要加上之前排除的符號位。
public class Solution { public int reverseInteger(int n) { boolean isNeg = n < 0; n = isNeg ? -n : n; int res = 0; while (n != 0) { int cur = n % 10; if (res >= (Integer.MAX_VALUE - cur) / 10) return 0; res = res * 10 + cur; n /= 10; } return isNeg ? -res : res; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65555.html
摘要:中的運算符,運算之后要出來,繼續遍歷數組。是放入新的數字,用轉換為均可。 Problem Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, *, /. Each operand may be an integer or another ...
摘要:直接的方法不可取因為是每一層。層直接從取出實際上是將這個后應該得到。這個時候考慮逆向,建立一個,將出來的東西再一個順序,逆逆得順是一個很好用的操作符,判斷一個對象是否是一個類的實例。坑小心一點這種情況啊代碼 這道題真是超級棒的stack DFS樣板題啊,在這里給自己寫個小小的總結 思路:想到stack并不難,這種嵌套式一般是DFS的思想,先走到最里面最小的那個括號,然后逐漸回到上一層→...
LeetCode version Problem Given a non-empty list of words, return the k most frequent elements. Your answer should be sorted by frequency from highest to lowest. If two words have the same frequency, t...
摘要:暴力解法就是時靈時不靈,兩次一次。希望看到的大神能夠分享優質的解法謝謝大家 Problem For an array A, if i < j, and A[i] > A[j], called (A[i], A[j]) is a reverse pair.return total of reverse pairs in A. Example Given A = [2, 4, 1, 3, ...
閱讀 1768·2021-10-11 10:57
閱讀 2352·2021-10-08 10:14
閱讀 3393·2019-08-29 17:26
閱讀 3340·2019-08-28 17:54
閱讀 3021·2019-08-26 13:38
閱讀 2885·2019-08-26 12:19
閱讀 3608·2019-08-23 18:05
閱讀 1277·2019-08-23 17:04