思路:把整數看成乙個多項式加法,例如123 = 1 * 100 + 2 * 10 + 3 * 1,我們要做的是將整數反轉過來,所以可以想到每次取數字的最低位來進行組合,我們利用迭代思想,取到的數字加在之前取得數字後面組成乙個新的數字。從多項式的角度來看是 3 * 10 * 10 * 10 + 2 * 10 * 10 + 1。
值溢位問題:整數的取值範圍是
[-2^,2^-1]
2的k次方除10的餘數始終為2,4,8,所以可以得到下溢和上溢的值。
class solution
return ans; //返回反轉後的數字
}}
時間複雜度o(n),空間複雜度o(1)
思路:字串包含空格,字母,數字,符號等。我們首先要想到的是先去除字串中的空格。(判斷字串此時是否遍歷完成)這樣剩下的字串第乙個字元一定是非空格。我們需要的是字元是數字,我們判斷第乙個數字是否為數字或者表示±的符號。如果為符號,記錄該符號。如果為字母,繼續遍歷直到找到數字或代表正負的符號。整數的取值範圍上一題已經說明,我們提前判斷是否數值會溢位,至於為何需要提前判斷,請看**詳細注釋。找到數字後通過迭代方式更新數字。
class solution
if (i == s.length()) //判斷是否已經遍歷完成
return 0;
int sign = 1; //判斷是否有正負號並記錄
char firstchar = chararray[i];
if (firstchar == '+') else if (firstchar == '-')
int res = 0;
while (i < s.length())
return res;
}}
時間複雜度為o(n),空間複雜度為o(1)。
思路:首先需要明確的是數字一定為非回文數,數字能被10整除的也不是回文數,因為數字第乙個數不可能為0,接下來只需要反轉數字,判斷反轉數字與給出數字是否一致即可。
class solution
return x == revertednumber || x == revertednumber / 10; //判斷反轉後數字和之前數字是否一致
}}
時間複雜度o(n),空間複雜度o(1)。 Leetcode騰訊精選練習2
原題 兩個大小為 m 和 n 的排序陣列 nums1 和 nums2 請找出兩個排序陣列的中位數並且總的執行時間複雜度為 o log m n 示例 1 nums1 1,3 nums2 2 中位數是 2.0 示例 2 nums1 1,2 nums2 3,4 中位數是 2 3 2 2.5 看到這題目自然...
Leetcode騰訊精選練習04
原題 leetcode7 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1...
Leetcode騰訊精選練習05
請你來實現乙個atoi函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如第乙個非空字元是數字,則直接將其與之後連續的數字字元組...