Leetcode刷题C#版之 Plus One
题目:
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.
C#版本的代码如下(关键步骤已经注释):
public int[] PlusOne(int[] digits) { //存放数据内容 List<int> listresult = new List<int>(); //首先给第一个数字加1 digits[digits.Length - 1]++; for (int i = digits.Length - 1; i >= 0; i--) { //这里判断是否存在进位 if (Addresult(ref digits[i]) > 0) { //这里的数字已经经过进位处理了 listresult.Add(digits[i]); //判断是否加到了最高位 if (i - 1 >= 0) { digits[i - 1]++; } else { //如果最高位就直接加1 listresult.Add(1); } } else { listresult.Add(digits[i]); } } //反转 listresult.Reverse(); return listresult.ToArray(); } int Addresult(ref int num) { //定义进位标识符 int addtag = 0; if (num < 10) { num = num; } else if (num >= 10) { num = num - 10; addtag++; } return addtag; }
看一下运行时间和效果: