题目概述:
Given a non-negative number represented as an array of digits, plus one to the number.
The digits are stored such that the most significant digit is at the head of the list.

题目解析:
给你一个int型数组存储一个非负整数,对整数加1后输出一个int型数组。注意几点:
        1.可能存在进位操作,增加一位,如999+1=1000;
        2.数组存储如234=[2, 3, 4],它进行加1操作时从数组的高位(4)到低位(2);
        3.输出时也需要转置[0, 0, 0, 1]转成1000;
        4.C语言代码*returnSize是一维数组,注意赋值否则提示“超时异常”。

我的代码:

/*** Return an array of size *returnSize.* Note: The returned array must be malloced, assume caller calls free().* 899+1=900 存储时digits[3]=[8,9,9] 从高位到地位 result[3]=[0,0,9]需要转置 * digitsSize数组长度 *returnSize为返回数组长度*/
int* plusOne(int* digits, int digitsSize, int* returnSize) { //初始时加1操作  后为进位数字0或1int add=1;      int i,j=0;int temp;//申请空间 初始化操作int *result=(int*)malloc(sizeof(int)*(digitsSize+1));memset(result, 0 , sizeof(int)*(digitsSize + 1));for(i=digitsSize-1; i>=0; i--) {result[j]=(digits[i]+add)%10;     //个位数字add=(digits[i]+add)/10;           //进位操作j++;}//最后如果add==1表示位数加1 如99+1=100if(add==1) {result[digitsSize]=1;*returnSize=digitsSize+1;       //注意它是一维数组//输出数组倒置for(i=0,j=digitsSize;i<j;i++,j--) {temp=result[i];result[i]=result[j];result[j]=temp;}}else {*returnSize=digitsSize;//输出数组倒置for(i=0,j=digitsSize-1;i<j;i++,j--) {temp=result[i];result[i]=result[j];result[j]=temp;}}return result;
}

推荐代码:
C语言代码 参考:http://www.tonzoc.info/?p=688

/*** Return an array of size *returnSize.* Note: The returned array must be malloced, assume caller calls free().*/
void reverse(int* digits, int start, int end) {int temp;for (int i = start; i <= (start + end) >> 1; ++i) {temp = digits[i];digits[i] = digits[end + start - i];digits[end + start - i] = temp;}
}int* plusOne(int* digits, int digitsSize, int* returnSize) {int num = 1;int* result = (int*)malloc(sizeof(int) * (digitsSize + 1));memset(result, 0, sizeof(int) * (digitsSize + 1));for (int i = digitsSize - 1; i >= 0; --i) {result[digitsSize - 1 - i] = (digits[i] + num) % 10;num = (digits[i] + num) / 10;}if (num) {*returnSize = digitsSize + 1;result[digitsSize] = num;reverse(result, 0, digitsSize);} else {*returnSize = digitsSize;reverse(result, 0, digitsSize - 1);}return result;
}

C++代码

vector<int> plusOne(vector<int> &digits) {  int carry=1, sum=0;  vector<int> result(digits.size(),0);  for(int i=digits.size()-1;i>=0;i--){  sum = carry+digits[i];  carry = sum/10;  result[i] = sum%10;  }  if(carry>0){ //进位 result.insert(result.begin(),carry);  }  return result;
}  

同类题目:
二进制字符串加法 https://leetcode.com/problems/add-binary/

PS:需要注意转换方法 ((a[i]-'0')+(b[j]-'0')+add)%2+'0'当前结果和进位数字add=((a[i]-'0')+(b[j]-'0')+add)/2;同时需要注意字符串倒置的方法和对齐判断即可。

(By:Eastmount 2015-9-9 凌晨2点   http://blog.csdn.net/eastmount/)

[LeetCode] Plus One - 整数字符转换相加相关推荐

  1. leetcode 罗马数字与整数的转换算法

    介绍: 该算法是将罗马数字转换为整数,思路如下:比如IXX,使用临时变量temp保存上一个已经遍历的罗马数字,比如:遍历时是从后往前遍历的:1> 刚开始时,temp = 0; 遍历当前遍历到第一 ...

  2. 字符转换 提取一个字符串中的所有数字字符('0'……'9'),将其转换为一个整数输出。 首位不能是0

    7-3 字符转换 (13分) 本题要求提取一个字符串中的所有数字字符('0'--'9'),将其转换为一个整数输出. 输入格式: 输入在一行中给出一个不超过80个字符且以回车结束的字符串. 输出格式: ...

  3. oracle 转化为整数,字符串转换成整数——从源码学习

    字符串转换成整数:输入一个表示整数的字符串,把该字符串转换成整数并输出,例如输入字符串"345",则输出整数345. 在笔试面试中,atoi 即「字符串转换成整数」是一个经典问题了 ...

  4. LeetCode (12.整数转罗马数字)JAVA StringBuffer

    LeetCode (12.整数转罗马数字)JAVA StringBuffer 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 1 ...

  5. mysql将字符转换成数字

    在操作mysql时,经常需要将字符转换成数字,这一步虽然简单,但不常用的话也很容易忘记,现将在网上找到的方法记录如下: 1.将字符的数字转成数字,比如'0'转成0可以直接用加法来实现 例如:将pony ...

  6. mysql怎么把字符变成数字_mysql将字符转换成数字

    在操作mysql时,经常需要将字符转换成数字,这一步虽然简单,但不常用的话也很容易忘记,现将在网上找到的方法记录如下: 1.将字符的数字转成数字,比如'0'转成0可以直接用加法来实现 例如:将pony ...

  7. 实验7-3-7 字符转换 (15分)

    .getchar() 是头文件<stdio.h>的库函数,第一次调用此函数时需要人工输入字符或字符串,每次调用读入一个字符:如果第一次人工输入的字符数大于1,则在下一次调用该函数时不需要人 ...

  8. mysql 将 字符 转换成 数字

    在操作MySQL时,经常需要将字符转换成数字,这一步虽然简单,但不常用的话也很容易忘记,现将在网上找到的方法记录如下: 1.将字符的数字转成数字,比如'0'转成0可以直接用加法来实现 例如:将pony ...

  9. java非负整数怎么设_使用JAVA将非负十进制整数n转换成b进制,递归方法与非递归方法...

    使用JAVA将非负十进制整数n转换成b进制,递归方法与非递归方法 使用JAVA将非负十进制整数n转换成b进制,递归方法与非递归方法 一.题目要求 将非负十进制整数n转换成b进制.(其中b=2~16) ...

最新文章

  1. 从分治算法到 MapReduce
  2. ASP.NET中处理HTTP请求的原理 (转)
  3. JAVA中的break[标签]continue[标签]用法
  4. 《大话数据结构》第9章 排序 9.1 开场白
  5. boost::geometry::segment_view用法的测试程序
  6. .NET 指南:捕获并且抛出标准的异常类型
  7. 卷积神经网络(CNN)及其实践
  8. 2019年9月全国程序员工资统计,看看你拖后腿了吗?
  9. jQuery实现字体变大和缩小
  10. python的datetime.strptime_Python strptime()和时区?
  11. 3d slicer调整窗宽窗位_3D游戏模型制作技巧,掌握这些技术你也能进鹅厂!
  12. mac pycharm汉化(附带汉化包)
  13. 17届智能汽车竞赛无线充电组的方案研究(非正经)
  14. 10HTML5期末大作业:影视在线网站设计——电影网H5(9页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码
  15. Java用while求100以内奇数和
  16. 程序人生 -- 我的成长之路和进阶经验分享
  17. java long to int_Java long(Long)与int(Integer)之间的转换
  18. vue 跳转html页面,vue项目实现页面的跳转
  19. PHP-用ThinkPHP和Bootstrap实现用户登录设计
  20. Docker Swarm 入门一篇文章就够了【转】

热门文章

  1. Oracle 中文分词CHINESE_VGRAM_LEXER与CHINESE_LEXER比较
  2. /etc/group 很好很强大
  3. 017_python常用小技巧
  4. Hibernate上传数据到数据库,从数据库读取数据到本地模板代码
  5. 设计模式のNullObjectPattern(空对象模式)----行为模式
  6. WPF 使用MahApps.Metro UI库
  7. C/C++中的##用法
  8. 云计算学习(1-1)云计算的定义
  9. getopt()和getopt_long()用法
  10. mousedown(function(){ return false; })作用