摘要:最后,我們判斷一開始的兩種情況,并返回或者即可。本許可協議授權之外的使用權限可以從處獲得。
一 目錄Create by jsliang on 2019-05-22 19:30:42
Recently revised in 2019-05-23 11:42:52
不折騰的前端,和咸魚有什么區別
目錄 |
---|
一 目錄 |
二 前言 |
三 解題 |
?3.1 解題 - 數組操作 |
?3.1 解題 - 數學算法 |
返回目錄
難度:簡單
涉及知識:數學
題目地址:leetcode-cn.com/problems/pa…
題目內容:
判斷一個整數是否是回文數?;匚臄凳侵刚颍◤淖笙蛴遥┖偷剐颍◤挠蚁蜃螅┳x都是一樣的整數。
示例 1:
輸入: 121
輸出: true
示例 2:
輸入: -121
輸出: false
解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個回文數。
示例 3:
輸入: 10
輸出: false
解釋: 從右向左讀, 為 01 。因此它不是一個回文數。
進階:
你能不將整數轉為字符串來解決這個問題嗎?
三 解題
返回目錄
官方題解:leetcode-cn.com/problems/pa…
解題千千萬,官方獨一家,上面是官方使用 C# 進行的題解。
小伙伴可以先自己在本地嘗試解題,再看看官方解題,最后再回來看看 jsliang 講解下使用 JavaScript 的解題思路。
3.1 解法 - 數組操作返回目錄
解題代碼:
var isPalindrome = function(x) {
const arr = String(x).split("");
for (let i = 0; i < arr.length / 2; i++) {
if (arr[i] !== arr[arr.length - (i + 1)]) {
return false;
}
}
return true;
};
執行測試:
x:1231
return:
false
LeetCode Submit:
? Accepted
? 11509/11509 cases passed (316 ms)
? Your runtime beats 97.12 % of javascript submissions
? Your memory usage beats 67.78 % of javascript submissions (45.5 MB)
知識點:
split():split() 方法使用指定的分隔符字符串將一個 String 對象分割成字符串數組,以將字符串分隔為子字符串,以確定每個拆分的位置。split() 詳細介紹
解題思路:
將數字轉為數組來判斷,是比較簡單的一種方法:
首先,我們將數字轉成字符串,再轉成數組。
然后,我們循環遍歷這個數組。
接著,判斷第 i 位和第 length - (i + 1) 位(例如 1231,第 0 位對應的是第 length - 1 位,第 1 位對應的是第 length - 2 位)。
最后,如果循環判斷沒問題,就返回 true;如果循環判斷有問題,直接在循環中 return false。
3.2 解法 - 數學算法返回目錄
解題代碼:
var isPalindrome = function(x) {
if(x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
let revertedNumber = 0;
while(x > revertedNumber) {
revertedNumber = revertedNumber * 10 + x % 10;
x = Math.floor(x / 10);
}
return x === revertedNumber || x === Math.floor(revertedNumber / 10);
};
執行測試:
x:12321
return:
true
LeetCode Submit:
? Accepted
? 11509/11509 cases passed (316 ms)
? Your runtime beats 97.12 % of javascript submissions
? Your memory usage beats 67.78 % of javascript submissions (45.5 MB)
知識點:
Math:JS 中的內置對象,具有數學常數和函數的屬性和方法。Math 詳細介紹
解題思路:
首先,我們可以想象:當一個數的長度為偶數,那么它對折過來應該是相等的;當一個數的長度是奇數,那么它對折過來后,有一個的長度需要去掉一位數(除以 10 并取整),因為奇數長度的那個數,我們不需要判斷它中間的數字。
我們定義傳遞過來的參數為:x,對折的數字為:z,而 y 為 x 目前的個位數。
然后,我們需要知道如何獲取到一個數的個位數:y = x % 10,我們也需要知道如何將單個數字不斷添加到一個數的末尾:z = z * 10 + y,例如:z = 1 * 10 + 2 = 12。
接著,我們只需要判斷 x 是不是小于 z 了,畢竟當它小于的時候,說明數字已經對半或者過半了。
最后,我們判斷一開始的兩種情況,并返回 true 或者 false 即可。
jsliang 廣告推送:
也許小伙伴想了解下云服務器
或者小伙伴想買一臺云服務器
或者小伙伴需要續費云服務器
歡迎點擊 云服務器推廣 查看!
jsliang 的文檔庫 由 梁峻榮 采用 知識共享 署名-非商業性使用-相同方式共享 4.0 國際 許可協議進行許可。
基于github.com/LiangJunron…上的作品創作。
本許可協議授權之外的使用權限可以從 creativecommons.org/licenses/by… 處獲得。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/7195.html
摘要:微信公眾號記錄截圖記錄截圖目前關于這塊算法與數據結構的安排前。已攻略返回目錄目前已攻略篇文章。會根據題解以及留言內容,進行補充,并添加上提供題解的小伙伴的昵稱和地址。本許可協議授權之外的使用權限可以從處獲得。 Create by jsliang on 2019-07-15 11:54:45 Recently revised in 2019-07-15 15:25:25 一 目錄 不...
摘要:月下半旬攻略道題,目前已攻略題。目前簡單難度攻略已經到題,所以后面會調整自己,在刷算法與數據結構的同時,攻略中等難度的題目。 Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20 7 月下半旬攻略 45 道題,目前已攻略 100 題。 一 目錄 不折騰的前端,和咸魚有什么區別...
摘要:有效三角形的個數雙指針最暴力的方法應該是三重循環枚舉三個數字??偨Y本題和三數之和很像,都是三個數加和為某一個值。所以我們可以使用歸并排序來解決這個問題。注意因為歸并排序需要遞歸,所以空間復雜度為 ...
摘要:在線網站地址我的微信公眾號完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個題。這是項目地址歡迎一起交流學習。 這篇文章記錄我練習的 LeetCode 題目,語言 JavaScript。 在線網站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號: showImg(htt...
摘要:回文數判斷一個整數是否是回文數。回文數是指正序從左向右和倒序從右向左讀都是一樣的整數。示例輸入輸出示例輸入輸出解釋從左向右讀為。因此它不是一個回文數。 LeetCode9.回文數 JavaScript 判斷一個整數是否是回文數?;匚臄凳侵刚颍◤淖笙蛴遥┖偷剐颍◤挠蚁蜃螅┳x都是一樣的整數。 示例 1: 輸入: 121 輸出: true 示例 2: 輸入: -121 輸出: false...
閱讀 2666·2021-11-23 09:51
閱讀 1651·2021-11-22 13:54
閱讀 2790·2021-11-18 10:02
閱讀 948·2021-08-16 10:57
閱讀 3563·2021-08-03 14:03
閱讀 1880·2019-08-30 15:54
閱讀 3535·2019-08-23 14:39
閱讀 607·2019-08-23 14:26