摘要:題目要求一個非負整數被表示為一個數組,數組中每一個元素代表該整數的一個位。數組的下標越小,代表的位數越高。現在對該數組做加一運算,請返回結果數組。
題目要求:一個非負整數被表示為一個數組,數組中每一個元素代表該整數的一個位。數組的下標越小,代表的位數越高。現在對該數組做加一運算,請返回結果數組。
/** * @author rale * * Given a non-negative integer represented as a non-empty array of digits, plus one to the integer. * You may assume the integer do not contain any leading zero, except the number 0 itself. * The digits are stored such that the most significant digit is at the head of the list. */ public class PlusOne { public int[] plusOne(int[] digits) { //此處可以直接將carry(進位)設置為1,優化程序 //carry = 0 //digits[digits.length-1] += 1 ; int carry = 1; int temp = 0; for(int i=digits.length-1 ; i>=0 ; i--){ temp = digits[i] + carry; digits[i] = temp%10; carry = temp/10; } if(carry>0){ int[] result = new int[digits.length+1]; result[0] = 1; for(int j = 1 ; j繼續優化
只有當需要進位的時候,加法才需要繼續下去,否則加法則可以在當前位停止。
可以在循環中添加判斷,若carry==0,則提前跳出循環/** * @author rale * * Given a non-negative integer represented as a non-empty array of digits, plus one to the integer. * You may assume the integer do not contain any leading zero, except the number 0 itself. * The digits are stored such that the most significant digit is at the head of the list. */ public class PlusOne { public int[] plusOne(int[] digits) { //此處可以直接將carry(進位)設置為1,優化程序 //carry = 0 //digits[digits.length-1] += 1 ; int carry = 1; int temp = 0; for(int i=digits.length-1 ; i>=0 ; i--){ temp = digits[i] + carry; digits[i] = temp%10; carry = temp/10; if(carry==0){ break } } if(carry>0){ int[] result = new int[digits.length+1]; result[0] = 1; for(int j = 1 ; j再再再次優化
此處優化最高位進位的情況
最高位出現進位,當且僅當其他位都產生進位且為0
優化后的代碼如下/** * @author rale * * Given a non-negative integer represented as a non-empty array of digits, plus one to the integer. * You may assume the integer do not contain any leading zero, except the number 0 itself. * The digits are stored such that the most significant digit is at the head of the list. */ public class PlusOne { public int[] plusOne(int[] digits) { int carry = 1; int temp = 0; for(int i=digits.length-1 ; i>=0 ; i--){ temp = digits[i] + carry; digits[i] = temp%10; carry = temp/10; } if(carry>0){ int[] result = new int[digits.length+1]; result[0] = 1; // 最高位進位的情況只有一種,即其它位均進位且為0,無需再循環一次 // for(int j = 1 ; j
想要了解更多開發技術,面試教程以及互聯網公司內推,歡迎關注我的微信公眾號!將會不定期的發放福利哦~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66834.html
摘要:作者碼蹄疾畢業于哈爾濱工業大學。最高位數字存放在數組的首位,數組中每個元素只存儲一個數字。你可以假設除了整數之外,這個整數不會以零開頭。示例輸入輸出解釋輸入數組表示數字。 作者: 碼蹄疾畢業于哈爾濱工業大學。 小米廣告第三代廣告引擎的設計者、開發者;負責小米應用商店、日歷、開屏廣告業務線研發;主導小米廣告引擎多個模塊重構;關注推薦、搜索、廣告領域相關知識; 題目 給定一個由整數組成的非...
摘要:作者碼蹄疾畢業于哈爾濱工業大學。最高位數字存放在數組的首位,數組中每個元素只存儲一個數字。你可以假設除了整數之外,這個整數不會以零開頭。示例輸入輸出解釋輸入數組表示數字。 作者: 碼蹄疾畢業于哈爾濱工業大學。 小米廣告第三代廣告引擎的設計者、開發者;負責小米應用商店、日歷、開屏廣告業務線研發;主導小米廣告引擎多個模塊重構;關注推薦、搜索、廣告領域相關知識; 題目 給定一個由整數組成的非...
摘要:作者碼蹄疾畢業于哈爾濱工業大學。最高位數字存放在數組的首位,數組中每個元素只存儲一個數字。你可以假設除了整數之外,這個整數不會以零開頭。示例輸入輸出解釋輸入數組表示數字。 作者: 碼蹄疾畢業于哈爾濱工業大學。 小米廣告第三代廣告引擎的設計者、開發者;負責小米應用商店、日歷、開屏廣告業務線研發;主導小米廣告引擎多個模塊重構;關注推薦、搜索、廣告領域相關知識; 題目 給定一個由整數組成的非...
摘要:題目描述給定一個由整數組成的非空數組所表示的非負整數,在該數的基礎上加一。最高位數字存放在數組的首位,數組中每個元素只存儲一個數字。你可以假設除了整數之外,這個整數不會以零開頭。示例輸入輸出解釋輸入數組表示數字。 題目描述 給定一個由整數組成的非空數組所表示的非負整數,在該數的基礎上加一。 最高位數字存放在數組的首位, 數組中每個元素只存儲一個數字。 你可以假設除了整數 0 之外,這個...
閱讀 1074·2021-11-24 09:39
閱讀 1307·2021-11-18 13:18
閱讀 2425·2021-11-15 11:38
閱讀 1824·2021-09-26 09:47
閱讀 1625·2021-09-22 15:09
閱讀 1624·2021-09-03 10:29
閱讀 1510·2019-08-29 17:28
閱讀 2951·2019-08-29 16:30