题目概述:
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. SVN之版本控制系统
  2. python求偶奇数和差编程_选择最大奇数Python
  3. 一文梳理水下检测方法
  4. CSP认证201412-2 Z字形扫描[C++题解]:模拟
  5. 安装GitLab,Jenkins,及自动化上线
  6. CSS_03_04_CSS伪元素选择器
  7. 我常用的python函数(part1)--内置函数isinstance
  8. 【渝粤教育】 国家开放大学2020年春季 1325妇产科学与儿科护理学 参考试题
  9. BitCherry测试网络将于12月24日12:00上线
  10. 名为 cursor_jinserted 的游标不存在_一个工程师必须了解的测量常识,你不知道怎么行...
  11. nodejs 中http请求头,响应头
  12. ZZULIOJ 1168
  13. 计算机联锁的英语文献,计算机联锁参考文献
  14. mysql sql trace_SQL_TRACE及 Tkprof用法以及问题分析
  15. matlab的默认字体_为MATLAB更换支持中文的等宽字体
  16. EditPlus安装步骤
  17. Java语言知识大盘点(期末总复习)三
  18. 管理与维护Linux系统
  19. ZT ---- 给孩子的信(孩子写给爸爸妈妈的信在24、25、26楼)
  20. NVIDIA Jetson TK1学习与开发(二):入门指导

热门文章

  1. .net 后台读取pdf的值
  2. Visual Studio 技能GET
  3. Apple 预计于内华达州雷诺市再盖一个数据中心
  4. Commons IO方便读写文件的工具类
  5. 一个Excel导出类的实现过程(二):显示定制
  6. Unity3D 自定义数据格式
  7. openquery基本运用实例
  8. python简单定义_python定义类的简单用法
  9. C语言程序练习-L1-032 Left-pad (20分)
  10. 9月4日服务器例行维护公告,《诺亚传说手游》官网-【例行维护】9月4日官方维护公告(抢鲜服)- 诺亚手游-首款科幻团战手游...