leetcode—66 Plus One(数组中的值+1进位操作,数组扩充)

Plus One 66  Total Accepted: 48227 Total Submissions: 157869 My Submissions Question Solution

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.

Hide Tags Array Math

题意:一个整数按位存储于一个int数组中,排列顺序为:最高位在array[0] ,最低位在[n-1],例如:98,存储为:array[0]=9; array[1]=8,然后进行+1操作,即98+1,在数组上进行操作

解题思路:这是一道比较简单的题目,对一个数组进行加一操作。但是可不要小看这个题,这个题被称为“Google最喜欢的题”,因为在google面试中出现的频率非常高。从数组的最后一位开始加1,需要考虑进位,如果到[0]位之后仍然有进位存在,需要新开一个长度为(n.length
+ 1)的数组,拷贝原来的数组。

代码如下:

	public static int[] plusOne(int []digits)
	{
		//设置进位标识,初始值为1,意为数组最后一位+1操作
		int flag=1;
		int i=0;
		if (digits==null||digits.length==0)
		{
			return digits;
		}
		for (i = digits.length-1; i >=0; i--)
		{
			digits[i]=digits[i]+flag;
			//如果+1后的值大于9,该位上的数值置为0,并将进位标识置1
			if (digits[i]>9)
			{
				flag=1;
				digits[i]=0;
			}
			else
			{
				return digits;
			}
		}
		//遍历完数组后,如果进位标识为1,则需扩充数组大小,并将新数组的第一个上
		//数值置为1,其余上位上的值使用遍历,进行复制即可
		if (i==-1&&flag==1)
		{
			int []newdigits=new int[digits.length+1];
			newdigits[0]=1;
			for ( i = 1; i < digits.length; i++)
			{
				newdigits[i]=digits[i];
			}
			return newdigits;
		}
		else
		{
			return digits;
		}
	}

我觉得为什么Google喜欢的原因是后续可以问一些比较基本的扩展问题,比如可以扩展这个到两个数组相加,或者问一些OO设计,假设现在要设计一个BigInteger类,

那么需要什么构造函数,然后用什么数据结构好,用数组和链表各有什么优劣势。

时间: 2024-10-29 03:12:22

leetcode—66 Plus One(数组中的值+1进位操作,数组扩充)的相关文章

将二维数组中某个值为空的数组进行删除!

for($i=0,$len=count($lists); $i<$len; $i++){    if($lists[$i]['picurl']==""){        unset($lists[$i]);    }} 原文地址:https://www.cnblogs.com/beili/p/8962287.html

算法题:找出一个数组中相加值最大的连续序列元素

package arithmetic; /** * @author SHI * 求一个数组中相加值最大的连续序列元素 */ public class MaxSequence { public static void main(String[] args) { int[] a=new int[]{-2,9,-3,4,-6,7,-6,4}; findBigSequence(a); } /** * 思想: (1)计算出该数组的所有元素和,假设该值为最大 * (2)从数组下标1到a.length-1依次

PHP usort 使用用户自定义的比较函数对数组中的值进行排序

From: http://www.php100.com/cover/php/2395.html usort (PHP 4, PHP 5) usort — 使用用户自定义的比较函数对数组中的值进行排序 说明 bool usort ( array &$array , callback $cmp_function ) 本函数将用用户自定义的比较函数对一个数组中的值进行排序.如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数. 比较函数必须在第一个参数被认为小于,等于或大于第二个参数时分

动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有

 1定义接口: Num.h #ifndef_NUM_H_ #define_NUM_H_ #include<stdio.h> #include<stdlib.h> /************************************************************************/ /*数组的结构体类型                                                    */ /*******************

PHP 使用用户自定义的比较函数对数组中的值进行排序

原文:PHP 使用用户自定义的比较函数对数组中的值进行排序 usort (PHP 4, PHP 5) usort —      使用用户自定义的比较函数对数组中的值进行排序 说明 bool usort        ( array &$array       , callable $cmp_function       ) 本函数将用用户自定义的比较函数对一个数组中的值进行排序.如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数. Note: 如果两个成员比较结果相同,则它们在排

php 计算多维数组中所有值的总和

php 内置函数 array_sum() 函数返回数组中所有值的总和,只能返回一维数组的总和: 计算多维数组所有值的和就要自定义函数了: 1 function get_sum($array) { 2 $num = 0; 3 foreach($array as $k => $v) { 4 if(is_array($v)) { 5 $num += get_sum($v); 6 } 7 } 8 return $num + array_sum($array); 9 }10 get_sum($array)

数组中的方法 --- 不改变原数组的方法

1.concat()把元素衔接到数组中. concat() 方法用于连接两个或多个数组. 该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本. 2.every() 方法使用指定函数检测数组中的所有元素: 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测. 如果所有元素都满足条件,则返回 true 3.filter()返回满足断言函数的数组元素. 4.forEach()为数组的每一个元素调用指定函数. 5indexOf()在数组中查找指定元素. 

如何将一个数组中的元素插入另一个数组

如何将一个数组中的元素插入另一个数组:本章节直接给出一段将一个数组中元素插入另一个数组中的代码实例,直接套用就可以了.代码如下: var first = ['a','b','c']; var second = ['1','2','3']; var index = 1; second.unshift(index, 0); Array.prototype.splice.apply(first, second); 原文地址是:http://www.softwhy.com/forum.php?mod=v

将两个排好序的数组,合并到另外一个数组中,并且合并之后的数组也是有序的。

int a[3] = {12, 15, 17}; int b[4] = { 2, 8, 16, 22}; int c[7] = {0}; int i = 0, j = 0, k = 0; while (i < 3 && j < 4 ) { if (a[i] > b[j]) { c[k++] = b[j++]; } else { c[k++] = a[i++]; } } while (i < 3) { c[k++] = a[i++]; } while (j <