每日一道算法:迴文數

2021-01-10 張德Talk

題目:判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。示例1:輸入: 121輸出: true示例2:輸入: -121輸出: false解釋: 從左向右讀, 為 -121 。從右向左讀, 為 121- 。因此它不是一個迴文數示例3:輸入: 10輸出: false解釋: 從右向左讀, 為 01 。因此它不是一個迴文數

解法:反轉一半數字

思路分析:

第一想到的兩種辦法是:1、通過整數轉換字符串反轉後判斷兩數是否相等(時間複雜度O(n))2、數學方法全反轉(時間複雜度O(logn))以上兩種方法可以解決,但不是最優的,因為還需要判斷是否益處最佳的方法:還是使用數學方法進行反轉,但是只需反轉一半即可PHP代碼實現:

複雜度分析:

時間複雜度:O(log10(n))對於每次迭代,我們會將輸入除以10時間複雜度:O(1)github

以後每次題解都會上傳到這個項目LeetCodePHP:https://github.com/zhangdejian/LeetCodePHP

題目來源

力扣(LeetCode):https://leetcode-cn.com/problems/palindrome-number/

相關焦點

  • 每日一個小算法之判斷迴文數20190811
    判斷是不是迴文數判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。示例 1:輸入: 121輸出: true示例 2:輸入: -121輸出: false解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個迴文數。示例 3:輸入: 10輸出: false解釋: 從右向左讀, 為 01 。
  • LeetCode面試系列 第6天:No.9 - 迴文數
    今天我們來分析一道相對輕鬆的字符串面試題吧,恰好大家從Python 100天中學到的字符串知識可以派上用場。Leetcode今天要給大家分析的面試題是 LeetCode 上第 9 號問題,LeetCode - 9.
  • 迴文數與無釐頭的冰雹
    書中提到了「花環數」,即將兩整數相乘,使其乘積的數呈中心對稱,此即「迴文數」。馬哈維拉親自找到了一些迴文數,例如14287143×7=10001000112345679×9=11111111127994681×441=12345654321之所以稱花環數,估計與印度人愛花,同時花環是無頭無尾且對稱有關。
  • 「每日一練」巧用Python識別是不是迴文數
    Python對於數字的處理能力是很強大的,今天我們讓Python判斷我們輸入的一個數是不是迴文數,那麼什麼是迴文數呢?12321是迴文數,個位與萬位相同,十位與千位相同。往下看,就是這麼簡單!案例一個5位數,判斷它是不是迴文數。
  • 如何判斷C語言的迴文數?
    迴文數意指一個整數其各位數字按照正反順序讀完全相同,例如12321。判斷給出的整數是否是迴文數。若是,則輸出該整數各位數字之和,否則輸出no。,我們得到新數 4321 ,如果是回文,那麼新數應該等於原數,否則,說明不是回文。
  • VB 輸出迴文數 - 百度經驗
    「回文」是指正讀反讀都能讀通的句子,它是古今中外都有的一種修辭方式和文字遊戲,如「我為人人,人人為我」等。在數學中也有這樣一類數字有這樣的特徵,成為迴文數(palindrome number)。[1]        設n是一任意自然數。
  • 問題有點燒腦,趣談迴文數
    比如121、5335、6084806都是迴文數。當然,由同一個數字組成的數,如11,999也是迴文數。迴文數還要一個比較文藝的名字。巴克敏斯特福樂在其著作《協同學》(Synergetics)中把迴文數也叫做沙拉扎數(Scheherazade Numbers),沙拉扎是《一千零一夜》中那位講故事的王妃、即宰相的女兒的名字。
  • 每天一道leetcode234-回文鍊表
    正當班主任要繼續發話,只聽到角落默默想起來一個聲音:」K2」前言 2018.11.6號打卡明天的題目:https://leetcode-cn.com/problems/remove-linked-list-elements/以後明天的題目提取公布一下哈,因為有些朋友想提前做一下~題目 leetcode234-回文鍊表中文連結:https
  • 怎麼判斷一個數是不是迴文數?用java幫助你!
    昨天分享了怎麼來判斷一個數字的奇偶性,其中用到了if選擇語句和求餘運算,雖然都不是很難的知識點,但是也不可能分享一次就不管了,所以今天繼續分享一個和它倆有關的代碼:如何判斷一個五位數是不是迴文數。首先了解一下迴文數是什麼:迴文數是指一個數字從前往後讀和從後往前讀結果是一樣的。比如:2、66、151、2332、85658等等,只要正著念和反著念是一樣的,都是迴文數。
  • 數學建模|算法挑戰004——Largest palindrome product
    「回文」是指正讀反讀都能讀通的句子,它是古今中外都有的一種修辭方式和文字遊戲,如「我為人人,人人為我」等等。在數學中也有這樣一類數字有這樣的特徵,稱為迴文數(palindrome number)。迴文數的定義:設n是一任意自然數。
  • 透過數學檯曆看數學(2018.3.11) - 有趣的迴文數
    — 2018.3.11 —11^2 = 121, 11^3 = 1331, 11^4 = 14641每個等式右邊結果剛好就是迴文數. 不過你可以試試 11^5 是不是呢?迴文數(Palindromic number)迴文數是指一個像14641這樣「對稱」的數,即:將這個數的數字按相反的順序重新排列後,所得到的數和原來的數一樣.這裡,「回文」是指像「媽媽愛我,我愛媽媽」這樣的,正讀反讀都相同的單詞或句子。迴文數在休閒數學領域備受關注。一個典型的問題就是,尋找那些具有某種特性,並且符合回文特徵的數。
  • 回文鍊表 | Python
    回文鍊表題目來源:力扣(LeetCode)https://leetcode-cn.com/problems/palindrome-linked-list/ 題目 請判斷一個鍊表是否為回文鍊表。重排鍊表 | 線性表、切分鍊表(迭代+雙指針)線性表 + 雙指針一般情況下,我們要求數組是否是回文,可以使用雙指針的話方法。初始定義雙指針分別指向數組的頭尾元素,指針往中間移動進行判斷。但是鍊表不能夠隨意訪問特定的數據,上面的方法也就無效。
  • 初中趣味數學:發現「迴文數字算式」的對稱美
    當然,這種對稱美,不僅來自於日常生活、藝術圖案、建築造型,還來自於古典詩歌、聯句答對的「迴文聯」、「迴文詩」中,比如一些膾炙人口的聯句:「鬥雞山上山雞鬥;龍隱洞中洞隱龍。」「霧鎖山頭山鎖霧;天連水尾水連天。」「客上天然居;居然天上客。」「心清可品茶;茶品可清心。」 「賢出多福地;地福多出賢。」
  • 每天一道LeetCode算法題——兩數之和
    說來慚愧,算法書看了不止一本,但是看書的時候書裡的練習都沒有怎麼思考,直接看的參考答案,導致了對算法的研究僅僅停留在了解這種程度,缺乏實戰所以在平時coding中也不會將算法知識代入使用。於是開始了LeetCode刷題之旅~題目描述給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,並返回他們的數組下標。
  • 每日一道編程題(185):數字的補數
    每日編程中遇到任何疑問、意見、建議請公眾號留言或直接撩Q474356284(備註每日編程)
  • 2021屆秋招大廠高頻算法題匯總
    當初在準備秋招的時候,算法是一個大難題,不知道該怎麼準備,也不知道應該要刷哪些題,只能在網上看面經,然後整理一遍,下面這些題目主要來源三個方面,(1)我自己遇到的真題(2)牛客上的面經,別人遇到的真題數組力扣1:兩數之和力扣1299:將每個元素替換為右側最大元素力扣1464:數組中兩個元素的最大乘積力扣15:三數之和力扣179:最大數
  • 在C語言中,核心是指針,靈魂是算法,本篇用源碼解析十大基礎算法原理!
    算法是一個程序和軟體的靈魂,作為一名優秀的程式設計師,只有對一些基礎的算法有著全面的掌握本文是近百個C語言算法系列的第二篇,包括了經典的Fibonacci數列、簡易計算器、回文檢查、質數檢查等算法。也許他們能在你的畢業設計或者面試中派上用場。
  • 每日一道 LeetCode (15):二進位求和
    ❝每天 3 分鐘,走上算法的逆襲之路。❞前文合集每日一道 LeetCode 前文合集代碼倉庫GitHub:https://github.com/meteor1993/LeetCodeGitee:https://gitee.com/inwsy/LeetCode
  • 每日一道編程題(128):最大數
    每日編程中遇到任何疑問、意見、建議請公眾號留言或直接撩Q474356284(備註每日編程)今日問題:給定一組非負整數,重新排列它們的順序使之組成一個最大的整數。
  • 每天一道算法題(第三十二期)
    算法題解沒有特定的思路,可能一人有一個思路,例如有的題既可以使用動規,又可以使用分治。殊途同歸,算法的目的就是提升效率。連續數列給定一個整數數組,找出總和最大的連續數列,並返回總和。Math.max(                Math.max(sumLeft,sumRight),                leftMaxSum+rightMaxSum);  }  return divide(nums,0,nums.length-1);};主要元素如果數組中多一半的數都是同一個