乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      BAT面試算法進階(7)- 反轉整數

       長沙7喜 2018-08-19

      小編溫馨提示,今天是我們堅持的第7天! 今天休息日,降低了些難度.讓大家輕松的放假也能學習哦


      一.題目

      給定一個 32 位有符號整數,將整數中的數字進行反轉

      • 例如:

      輸入: 123
      輸出: 321

      輸入: 120
      輸出: 21

      輸入: -123
      輸出: -321

      • 注意

      假設我們的環(huán)境只能存儲 32 位有符號整數,其數值范圍是 [?2^31, 2^31 ? 1]。根據這個假設,如果反轉后的整數溢出,則返回 0。

      二.解決方案

      1.方法:彈出和推入數字 & 溢出前進行檢查

      2.思路:
      我們可以一次構建反轉整數的一位數字。在這樣做的時候,我們可以預先檢查向原整數附加另一位數字是否會導致溢出。

      3.算法
      反轉整數可以和反轉字符串一起類比實現.
      在沒有輔助的堆棧/數組的幫助下,'彈出'和'推入'數字,可以嘗試有用數學的方式.

      但是,當因為當 temp = rev*10+pop時,有可能會造成溢出.

      4.解決溢出

      • 假設rev,為正數

      • 如果temp = rev*10+pop,導致溢出.那么一定rev >= INTMAX/10;

      • 如果rev > INTMAX / 10;那么temp = rev*10+pop 一定會溢出

      • 如果rev == INTMAX / 10,那么只要pop > 7 ,temp = rev*10+pop 就會溢出


      三.代碼實現
      C++ Code


      四.復雜度

      • 時間復雜度:O(log(x))

      • 空間復雜度:O(1)


      小編OS:

      如有疑問,留言即可.胖C會利用空余時間給大家做一個簡單解答的.
      持續(xù)更新關注公眾號!


        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多