首页 > 代码库 > Plus One Leetcode
Plus One Leetcode
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.
这道题我是用了通用解法,忽略了本题的特殊性。其实如果加1的话,只是遇到9会进一位,剩下都不会有影响。
这个是我之前的解法:
public class Solution { public int[] plusOne(int[] digits) { if (digits == null) { return null; } List<Integer> num = new ArrayList<>(); int carry = 0; for (int i = digits.length - 1; i >= 0; i--) { if (i == digits.length - 1) { int sum = (digits[i] + 1) % 10; carry = (digits[i] + 1) / 10; num.add(sum); } else { int sum = (digits[i] + carry) % 10; carry = (digits[i] + carry) / 10; num.add(sum); } } if (carry == 1) { num.add(carry); } int[] res = new int[num.size()]; for (int i = num.size() - 1, j = 0; i >= 0; i--, j++) { res[j] = num.get(i); } return res; } }
但是其实有更简洁的写法。。。
public class Solution { public int[] plusOne(int[] digits) { if (digits == null) { return null; } int l = digits.length - 1; for (int i = l; i >= 0; i--) { if (digits[i] < 9) { digits[i] = digits[i] + 1; return digits; } digits[i] = 0; } int[] newNum = new int[digits.length + 1]; newNum[0] = 1; return newNum; } }
这个解法很巧妙,更巧妙的是如果跳出loop还没有结束,那么只需要重新建个数组把第一位改成1就可以了。
Plus One Leetcode
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。