力扣7. 整數反轉

方法一:官方給的,自己懂了后照著敲了一遍

class Solution {public int reverse(int x) {int rev = 0;while (x != 0) {//if判斷條件過于復雜,我好不容易看懂了if (rev < Integer.MIN_VALUE / 10 || rev > Integer.MAX_VALUE / 10) {return 0;}int digit = x % 10;x /= 10;rev = rev * 10 + digit;}return rev;}
}

1.收獲也有,
Java中整型最大值和最小值用兩個變量表示:
在這里插入圖片描述
在這里插入圖片描述
2.在JDK中,整形類型是有范圍的,最大值為Integer.MAX_VALUE,即2147483647,最小值為Integer.MIN_VALUE -2147483648。
對整形最大值加1,2147483648(越界了),那么此時值為多少呢?結果是-2147483648,即是Integer.MIN_VALUE。
類似的,對Integer.MIN_VALUE取反或者取絕對值呢?仍為Integer.MIN_VALUE,因為值為-2147483648,絕對值2147483648超過Integer.MAX_VALUE 2147483647。
所以就有以下結果
Integer.MAX_VALUE + 1 = Integer.MIN_VALUE
Math.abs(Integer.MIN_VALUE) = Integer.MIN_VALUE (絕對值)
Long,short,byte的結論是相同的。
轉自:https://blog.csdn.net/qq_39590763/article/details/85764780
講的太清楚了,希望原作者原諒我“直接參考”

方法二:力扣評論區網友的,比較好理解

class Solution {public int reverse(int x) {int rev = 0;int temp = 0;while(x!=0){temp = rev*10+x%10;if(temp/10!=rev){//溢出return 0;}rev = temp;x/=10;}return rev;}
}

1.if(temp/10!=rev)怎么就溢出了呢?
因為超過范圍后部分數據會被抹去,這時在除以10也不能回到上一次循環,也就表示溢出了
2.這種方法比較野,不是“正派”解法,只適用于 溢出時編譯器不報錯 的語言,Java就是其一

再看看錯誤代碼:
我第一次寫的代碼

class Solution {public int reverse(int x) {boolean flag = x>=0?false:true;//區分x正負if(flag){x=-x;}int rev = 0;while(x/10!=0){rev = rev*10+x%10;x /= 10;}rev = rev*10+x%10;if(flag){rev = -rev;}//判斷rev是否在32位范圍內if(rev>=Integer.MIN_VALUE&&rev<=Integer.MAX_VALUE){return rev;}else{return 0;}}
}

1.首先沒分清求余和取模的概念,根本沒必要用標志變量flag區分x的正負
2.沒理解題目的要求:整數超過 32 位的有符號整數的范圍就return 0;因為超過的數根本不會正確表示出來,所以代碼

if(rev>=Integer.MIN_VALUE&&rev<=Integer.MAX_VALUE){return rev;}else{return 0;}

無用,我后來明白后想笑
3.可以優化while代碼段

while(x!=0){rev = rev *10 + x%10;x/=10;
}

只是簡單水平的題都能挖出這么多知識(我經常被菜醒)
生活充滿希望!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374769.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374769.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374769.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AndroidManifest.xml中的application中的name屬性

被這個不起眼的屬性折磨了一天&#xff0c;終于解決了。 由于項目需要&#xff0c;要合并兩個android應用&#xff0c;于是拷代碼&#xff0c;拷布局文件&#xff0c;拷values&#xff0c;所有的都搞定之后程序還是頻頻崩潰&#xff0c;一直沒有找到原因&#xff0c;學android…

完美單身

我不時遇到一些Java程序員&#xff0c;他們不確定他們應該如何正確實現Singleton模式。 &#xff08;如果您不知道什么是Singleton&#xff0c;請嘗試Wikipedia&#xff1a; Singleton模式 &#xff09;。 我并不是在談論在線程環境中的正確實現。 但是&#xff0c;使用最常見的…

力扣移動零

給定一個數組 nums&#xff0c;編寫一個函數將所有 0 移動到數組的末尾&#xff0c;同時保持非零元素的相對順序。 我寫的代碼思路是從開始元素找0&#xff0c;找到了就將這個0后面的元素向前移一位 class Solution {public void moveZeroes(int[] nums) {int n nums.length;…

Doclava:來自Google的自定義Javadoc Doclet

Doclava是Google的自定義Javadoc Doclet&#xff0c;由Google Guice使用&#xff08;請參閱稍冷的 Javadocs &#xff09;。 Doclava使用JSilver作為其模板引擎&#xff0c;這是Clearsilver的純Java實現。 我個人喜歡聯合文檔的想法&#xff0c;它允許文檔在打開的項目上相互鏈…

linux cat顯示若干行

【一】從第3000行開始&#xff0c;顯示1000行。即顯示3000~3999行 cat filename | tail -n 3000 | head -n 1000 【二】顯示1000行到3000行 cat filename| head -n 3000 | tail -n 1000 *注意兩種方法的順序 分解&#xff1a; tail -n 1000&#xff1a;顯示最后1000行 tail -n …

【Stackoverflow好問題】java在,如何推斷陣列Array是否包括指定的值

問題java中&#xff0c;怎樣推斷數組Array是否包括指定的值精華回答1.Arrays.asList(...).contains(...) 2.使用 Apache Commons Lang包中的ArrayUtils.containsString[] fieldsToInclude { "id", "name", "location" };if ( ArrayUtils.contai…

力扣移除元素

給你一個數組 nums 和一個值 val&#xff0c;你需要 原地 移除所有數值等于 val 的元素&#xff0c;并返回移除后數組的新長度。 不要使用額外的數組空間&#xff0c;你必須僅使用 O(1) 額外空間并 原地 修改輸入數組。 元素的順序可以改變。你不需要考慮數組中超出新長度后面…

在域驅動設計中使用狀態模式

域驅動設計&#xff08;DDD&#xff09;是一種軟件開發方法&#xff0c;其中&#xff0c;通過將實現與核心業務概念的不斷發展的模型相連接&#xff0c;可以解決問題的復雜性。 該術語是由Eric Evans創造的&#xff0c;并且有一個DDD專用站點可以促進其使用。 根據其定義&#…

使用selenium進行密碼破解(繞過賬號密碼JS加密)

經常碰到網站&#xff0c;賬號密碼通過js加密后進行提交。通過burp攔截抓到的賬號密碼是加密后的&#xff0c;所以無法通過burp instruder進行破解。只能模擬瀏覽器填寫表單并點擊登錄按鈕進行破解。于是想到了自動化web測試工具selenium&#xff0c;代碼如下&#xff0c;測試效…

力扣刪除排序數組中的重復項

給你一個有序數組 nums &#xff0c;請你 原地 刪除重復出現的元素&#xff0c;使每個元素 只出現一次 &#xff0c;返回刪除后數組的新長度。 不要使用額外的數組空間&#xff0c;你必須在 原地 修改輸入數組 并在使用 O(1) 額外空間的條件下完成。 我沒注意到“有序”這一條…

POJ1789-Truck History .

題目鏈接&#xff1a;http://poj.org/problem?id1789 題目的大概意思就是給你n個字符串。每個字符串只有7的長度。然后分別給這些字符串編號。不同編號之間的距離就是他們有多少個不同的字母。&#xff08;同一個位置字母不相同也算&#xff09;然后一個編號只能由另一個派生…

Java Fork / Join進行并行編程

最近幾年&#xff0c;計算機處理器領域發生了范式轉變。 多年來&#xff0c;處理器制造商一直在提高時鐘頻率&#xff0c;因此開發人員享受到這樣的事實&#xff0c;即他們的單線程軟件執行得更快&#xff0c;而無需他們付出任何努力。 現在&#xff0c;處理器制造商青睞多核芯…

arm-elf-gcc交叉編譯器的使用教程

arm-elf-gcc交叉編譯器的使用教程 一開始需要安裝arm-elf-gcc&#xff0c;但是這是一個32位的程序&#xff0c;我是安裝了64位的系統&#xff0c;據說安裝ia32.libs依賴庫能運行這個&#xff0c;但是看到博客上面前人安裝完了系統圖標少了一半&#xff0c;然后就怕了。經過了翻…

力扣刪除排序數組中的重復項 II

給你一個有序數組 nums &#xff0c;請你 原地 刪除重復出現的元素&#xff0c;使每個元素 最多出現兩次 &#xff0c;返回刪除后數組的新長度。 不要使用額外的數組空間&#xff0c;你必須在 原地 修改輸入數組 并在使用 O(1) 額外空間的條件下完成。 思路&#xff1a; 雙指針…

2 android學習資料

http://blog.csdn.net/lmj623565791 http://blog.csdn.net/harvic880925/article/details/50995268轉載于:https://www.cnblogs.com/YyuTtian/p/5440930.html

建立自己的GWT Spring Maven原型

大家好&#xff0c; 在觀看Justin撰寫的有關Spring和GWT的非常有趣的文章時&#xff0c;我認為展示如何構建自己的自定義Maven原型非常有用。我們將展示的原型基于Justin的上一個項目&#xff0c;并包括各種技術&#xff0c;例如Spring &#xff0c; GWT &#xff0c; AspectJ…

C# 連接Oracle數據庫異常總結

這2天因為工作需要連接Oracle數據庫&#xff0c;中間發生了很多問題 一、使用OleDbConnection連接數據庫 ------------------ ProviderOraOLEDB.Oracle.1;User IDsajet;Passwordtech;Data Source(DESCRIPTION (ADDRESS_LIST (ADDRESS (PROTOCOL TCP)(HOST 192.168.66.225)(…

力扣顏色分類

給定一個包含紅色、白色和藍色&#xff0c;一共 n 個元素的數組&#xff0c;原地對它們進行排序&#xff0c;使得相同顏色的元素相鄰&#xff0c;并按照紅色、白色、藍色順序排列。 此題中&#xff0c;我們使用整數 0、 1 和 2 分別表示紅色、白色和藍色。 思路:將紅色和藍色…

Cassandra,MongoDB,CouchDB,Redis,Riak,HBase比較

克里斯托夫科瓦奇&#xff08;KristfKovcs&#xff09;對六個最受歡迎的“ NoSQL ”數據庫實現進行了非常有趣的簡短比較 。 除了Kristf的工作之外&#xff0c;我還想提供一些鏈接&#xff0c;我相信這些鏈接將對有興趣關注“ NoSQL ”社區的所有人員提供幫助&#xff1a; No…

程序員需要謹記的九大安全編碼規則

歷史已經證明&#xff0c;軟件設計的缺陷一直是導致其漏洞被利用的最主要的罪魁禍首。安全專家發現&#xff0c;多數漏洞源自常見軟件中相對有限的一些漏洞。軟件開發者和設計者應當嚴格檢查程序中的各種錯誤&#xff0c;盡量在軟件部署之前就減少或清除其中的漏洞。 下面列舉的…