Plus One 十进制数加一@LeetCode
来源:互联网 发布:周立功单片机教程 编辑:程序博客网 时间:2024/06/05 13:34
题目:
给定一个十进制数,用数组表示每一位,要求返回加一后的结果
思路:
从数组尾部到头部处理,用一个overflow flag来判断是否溢出,如果溢出则需要新开一个array
注意:
arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
import java.util.Arrays;/** * Plus One * * Given a number represented as an array of digits, plus one to the number. */public class S66 {public static void main(String[] args) {int[] digits = {9,9,9};//int[] digits = {0};System.out.println(Arrays.toString(plusOne(digits)));}public static int[] plusOne(int[] digits) {int i = digits.length-1;int overflow = 0;// 用来表示是否overflow了// 从尾到头加 while(i >= 0){ if(digits[i]+1 > 9){// 加完大于9的情况 digits[i] = 0; overflow = 1; i--; }else{// 加完小于10的情况 digits[i] = digits[i]+1; return digits; } } // 这种情况是当前位数不够用,就必须新开数组, // 处理首位 if(overflow > 0){ int[] newDigits = new int[digits.length+1]; System.arraycopy(digits, 0, newDigits, 1, digits.length); newDigits[0] = 1; newDigits[1] = 0; return newDigits; } return digits; }}
public class Solution { public int[] plusOne(int[] digits) { int[] ret = new int[digits.length]; int i = digits.length-1; int c = 0; // carry while(i >= 0){ int val = digits[i]; if(i==digits.length-1){ // rightmost val += c + 1; }else if(c > 0){ // carry val += c; } if(val > 9){ ret[i] = 0; c = 1; }else{ ret[i] = val; c = 0; } i--; } if(c == 1){ int[] copy = new int[digits.length+1]; System.arraycopy(copy, 1, ret, 0, ret.length); copy[0] = 1; return copy; }else{ return ret; } }}
- Plus One 十进制数加一@LeetCode
- LeetCode: Plus One
- LeetCode Plus One
- [Leetcode] Plus One
- LeetCode: Plus One
- leetcode 33: Plus One
- [LeetCode] Plus One
- [leetCode] Plus One
- 【leetcode】Plus One
- [LeetCode]Plus One
- [leetcode]Plus One
- LeetCode-Plus One
- [leetcode] plus one
- LeetCode - Plus One
- [LeetCode] Plus one
- LeetCode:Plus One
- leetcode之Plus One
- leetcode plus one
- Nginx实践:用memcached模块加速PHP应用程序
- jsp form get方式传递参数乱码
- strlen与sizeof的区别
- 起点!
- 数字图像处理基础(翻译一)
- Plus One 十进制数加一@LeetCode
- JAVA:数据库操作封装
- hdu 4099 Revenge of Fibonacci 字典树+大数
- JSP中的编码设置
- 新的融资方式构想
- Virtual Box 中安装CentOS 虚拟机增强功能
- 打包/解压 文件(unix/linux)
- c++之Vector容器数据两种取值方法(指针访问,数组下标访问)
- 使用Javamail发送邮件例子 eclipse