欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++實現(xiàn)LeetCode(7.翻轉(zhuǎn)整數(shù))

 更新時間:2021年07月09日 17:10:11   作者:Grandyang  
這篇文章主要介紹了C++實現(xiàn)LeetCode(7.翻轉(zhuǎn)整數(shù)),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下

[LeetCode] 7. Reverse Integer 翻轉(zhuǎn)整數(shù)

Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

Input: 123
Output: 321

Example 2:

Input: -123
Output: -321

Example 3:

Input: 120
Output: 21

Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231,  231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

翻轉(zhuǎn)數(shù)字問題需要注意的就是溢出問題,看了許多網(wǎng)上的解法,由于之前的 OJ 沒有對溢出進行測試,所以網(wǎng)上很多人的解法沒有處理溢出問題也能通過 OJ?,F(xiàn)在 OJ 更新了溢出測試,所以還是要考慮到。為什么會存在溢出問題呢,由于int型的數(shù)值范圍是 -2147483648~2147483647, 那么如果要翻轉(zhuǎn) 1000000009 這個在范圍內(nèi)的數(shù)得到 9000000001,而翻轉(zhuǎn)后的數(shù)就超過了范圍。博主最開始的想法是,用 long 型數(shù)據(jù),其數(shù)值范圍為 -9223372036854775808~9223372036854775807, 遠大于 int 型這樣就不會出現(xiàn)溢出問題。但實際上 OJ 給出的官方解答并不需要使用 long,一看比自己的寫的更精簡一些,它沒有特意處理正負號,仔細一想,果然正負號不影響計算,而且沒有用 long 型數(shù)據(jù),感覺寫的更好一些,那么就貼出來吧:

解法一:

class Solution {
public:
    int reverse(int x) {
        int res = 0;
        while (x != 0) {
            if (abs(res) > INT_MAX / 10) return 0;
            res = res * 10 + x % 10;
            x /= 10;
        }
        return res;
    }
};

在貼出答案的同時,OJ 還提了一個問題 To check for overflow/underflow, we could check if ret > 214748364 or ret < –214748364 before multiplying by 10. On the other hand, we do not need to check if ret == 214748364, why? (214748364 即為 INT_MAX / 10

為什么不用 check 是否等于 214748364 呢,因為輸入的x也是一個整型數(shù),所以x的范圍也應(yīng)該在 -2147483648~2147483647 之間,那么x的第一位只能是1或者2,翻轉(zhuǎn)之后 res 的最后一位只能是1或2,所以 res 只能是 2147483641 或 2147483642 都在 int 的范圍內(nèi)。但是它們對應(yīng)的x為 1463847412 和 2463847412,后者超出了數(shù)值范圍。所以當過程中 res 等于 214748364 時, 輸入的x只能為 1463847412, 翻轉(zhuǎn)后的結(jié)果為 2147483641,都在正確的范圍內(nèi),所以不用 check。

我們也可以用 long 型變量保存計算結(jié)果,最后返回的時候判斷是否在 int 返回內(nèi),但其實題目中說了只能存整型的變量,所以這種方法就只能當個思路擴展了,參見代碼如下:

解法二:

class Solution {
public:
    int reverse(int x) {
        long res = 0;
        while (x != 0) {
            res = 10 * res + x % 10;
            x /= 10;
        }
        return (res > INT_MAX || res < INT_MIN) ? 0 : res;
    }
};

到此這篇關(guān)于C++實現(xiàn)LeetCode(7.翻轉(zhuǎn)整數(shù))的文章就介紹到這了,更多相關(guān)C++實現(xiàn)翻轉(zhuǎn)整數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++中實現(xiàn)線程安全和延遲執(zhí)行詳解

    C++中實現(xiàn)線程安全和延遲執(zhí)行詳解

    這篇文章主要為大家詳細介紹了C++中實現(xiàn)線程安全和延遲執(zhí)行的相關(guān)知識,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的小伙伴可以了解下
    2024-01-01
  • Qt實現(xiàn)矩形大小任意縮放的示例代碼

    Qt實現(xiàn)矩形大小任意縮放的示例代碼

    這篇文章主要介紹了Qt如何實現(xiàn)在窗口上繪制任意大小的矩形,并且通過邊角的拖曳按鈕可改變矩形大小,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-06-06
  • C語言進階:指針的進階(3)

    C語言進階:指針的進階(3)

    這篇文章主要介紹了C語言指針詳解及用法示例,介紹了其相關(guān)概念,然后分享了幾種用法,具有一定參考價值。需要的朋友可以了解下
    2021-09-09
  • C++ Qt開發(fā)之PushButton按鈕組件的使用詳解

    C++ Qt開發(fā)之PushButton按鈕組件的使用詳解

    Qt 是一個跨平臺C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺窗體應(yīng)用程序,本文將重點介紹QPushButton按鈕組件的常用方法及靈活運用,感興趣的小伙伴可以學習一下
    2023-12-12
  • Visual C++中Tab View的多種實現(xiàn)方法

    Visual C++中Tab View的多種實現(xiàn)方法

    這篇文章主要介紹了Visual C++中Tab View的多種實現(xiàn)方法,包括了CTabCtrl控件、CSheetCtrl標簽選擇窗口以及靜態(tài)分割窗口等實現(xiàn)Tab View的方法,需要的朋友可以參考下
    2014-10-10
  • C語言實現(xiàn)飛機游戲(豪華版)的示例代碼

    C語言實現(xiàn)飛機游戲(豪華版)的示例代碼

    在前文中已經(jīng)實現(xiàn)了基礎(chǔ)版和進階版的飛機游戲,但是存在的問題很明顯:已經(jīng)發(fā)射出去的子彈會隨著飛機位置的實時改變而改變,并且不能實現(xiàn)連發(fā)。本篇文章將利用數(shù)組進一步改進空戰(zhàn)游戲,感興趣的可以了解一下
    2022-10-10
  • C++ map與set封裝實現(xiàn)過程講解

    C++ map與set封裝實現(xiàn)過程講解

    set set是一種關(guān)聯(lián)式容器,下面這篇文章主要給大家介紹了關(guān)于C++中map和set使用的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家學習或者使用C++具有一定的參考學習價值,需要的朋友可以參考下
    2023-03-03
  • C++回溯法實例分析

    C++回溯法實例分析

    這篇文章主要介紹了C++回溯法,實例講述了回溯法的原理與實現(xiàn)方法,最后給出了回溯法解決八皇后的實例,需要的朋友可以參考下
    2014-09-09
  • C語言將數(shù)組中元素的數(shù)排序輸出的相關(guān)問題解決

    C語言將數(shù)組中元素的數(shù)排序輸出的相關(guān)問題解決

    這篇文章主要介紹了C語言將數(shù)組中元素的數(shù)排序輸出的相關(guān)問題解決,文中的題目是將元素連接起來排成一個數(shù)并要求出這類結(jié)果中數(shù)最小的一個,需要的朋友可以參考下
    2016-03-03
  • C語言中的四種常量詳解

    C語言中的四種常量詳解

    本篇文章是c語言基礎(chǔ)篇,主要講述一下常量,常量即不可被直接修改的量(const修飾的常變量可間接修改,后續(xù)文章會繼續(xù)說明)請大家持續(xù)關(guān)注腳本之家
    2021-10-10

最新評論