`
jgsj
  • 浏览: 957427 次
文章分类
社区版块
存档分类
最新评论

LeetCode Plus One

 
阅读更多

Plus One

Given a number represented as an array of digits, plus one to the number.

入门题。

我分为两种解法:

1 通用法,可以适用于+1到9数字的

2 特定法,稍微优化点,因为只是加1,所以,如果当前数字小于9的时候就直接加1就可以返回结果了。

两种方法都可以写出很简练的程序。

知识点:

要会根据特定情况优化算法。

下面是1 通用法的程序:

class Solution {
public:
	vector<int> plusOne(vector<int> &digits) 
	{
		if (digits.empty()) return digits;

		int carry = 1;
		for (int i = digits.size()-1; i >= 0; i--)
		{
			int sum = digits[i] + carry;
			carry = sum / 10;
			digits[i] = sum % 10;
		}

		if (carry == 1) digits.insert(digits.begin(), 1);

		return digits;
	}
};


下面是利用本题的特有性质优化的程序:

class Solution {
public:
    vector<int> plusOne(vector<int> &digits)
	{
		int i = 0;
		for (i = digits.size()-1; i >= 0; i--)
		{
			if (digits[i] >= 9) digits[i] = 0;
			else
			{
				digits[i]++;
				return digits;
			}
		}
		if (i < 0) digits.insert(digits.begin(), 1);
		
		return digits;
	}
};

//2014-1-7
	vector<int> plusOne4(vector<int> &digits) 
	{
		int n = digits.size()-1;
		while (n>=0 && digits[n] == 9) digits[n--] = 0;
		if (n>=0) digits[n]++;
		else digits.insert(digits.begin(),1);
		return digits;
	}

//2014-2-8 update
	vector<int> plusOne(vector<int> &digits) 
	{
		int i = digits.size()-1;
		for ( ; i >= 0 && digits[i] == 9; i--) digits[i] = 0;
		if (i >= 0) digits[i]++;
		else digits.insert(digits.begin(), 1);
		return digits;
	}




分享到:
评论

相关推荐

    LeetCode最全代码

    # [LeetCode](https://leetcode.com/problemset/algorithms/) ![Language](https://img.shields.io/badge/language-Python%20%2F%20C++%2011-orange.svg) [![License]...

    LeetCode C++全解

    Plus One iv. Pascal's Triangle v. Merge Sorted Array vi. Sum vii. Find Minimum in Rotated Sorted Array viii. Largest Rectangle in Histogram ix. Maximal Rectangle x. Palindrome Number xi. Search a 2D ...

    leetcode答案-LeetCode:Swift中的LeetCode

    leetcode 答案LeetCode LeetCode in Swift 这个Repo 用来存下我在LeetCode 解题的原始档,包含解题中遇到的错误,也包含解出AC ...Plus One Easy #70 Climbing Stairs Easy #83 Remove Duplicates from Sorted L

    戳气球leetcode-leetcode:leetcode

    leetcode category other hot keywords:Palindrome(mic), Subsequence Array 螺旋矩阵Spiral Matrix 顺时针打印矩阵 Next Permutation Product of Array Except Self 189.rotate-array 283.move-zero Range Sum ...

    leetcode切割分组-leetcode:leetcode

    066_plus_one.py # 数列末尾值+1 069_sqrt.py # 实现开根号 136_single_number.py # 位操作:异或(xor)操作 x ^ 0 = x; x ^ x = 0 sum 001_two_sum.py # 求list中能加和成指定值的两个位置 015_3_sum**.py # 求list...

    leetcodepython001-LeetCode:力码

    Plus One String 043 Multiply Strings 066 Add Binary Linked-list 002 Add Two Numbers Stack 020 Valid Parenthesis Hash Table 001 TwoSum Reference 完整的学习流程 How to be a softwair engineer: 其他人详解...

    判断链表是否为回文链表leetcode-LeetCode:LeetCode刷题

    6.PlusOne 加一:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 7.RemoveDuplicates 从排序数组中删除重复项:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素

    LeetCode:刷 LeetCode

    删除数组中指定元素返回新数组的长度 主字符串中找子字符串的索引 找目标数插入的索引 统计出现的数字和写出来 求数组中子数组的最大和LastWordLength计算最后一个单词的长度PlusOne数组加一mediumAddTwoNumbers 以...

    leetcode2sumc-Leetcode-2020:刷刷Leetcode并作纪录

    Plus One easy O O 118 Pascal's Triangle easy O O 119 Pascal's Triangle II easy O 要满足只用一个array大小空间O(k) k为input大小来完成,须具备backtracking概念 151 Reverse Words in a String medium O 这题...

    leetcode2-LeetCode:每天(希望)练习

    plus one is two. // Implementation: class Solution { public int onePlusOne() { return 2; } } // Afterthoughts: // Maybe I could return (1 + 1) instead of 2 // Results: // Runtime: 1337 ms, faster than...

    leetcoderust-leetcode-rust:Leetcode的Rust解决方案

    当您想解决一个新问题时(例如./src/solution/0066_plus_one.rs One的 url 所在),以下命令可以帮助您获取相关信息并生成新的源文件( ./src/solution/0066_plus_one.rs )。 cargo run fetch plus-one 问题清单。 ...

    leetcode添加元素使和等于-Leetcode:力码

    plusOne easy 描述:用一组数据表示一个整数,实现整数加一的操作 主要思路:主要考虑最高位进位的情况,可以创建一个长度加一的数组,原数组进行加一操作的时候,同时也将每位的结果复制到新数组中,最后判断最高位...

    扩展矩阵leetcode-Leetcode:LeetcodeAnswer-Java

    plusOne 73.矩阵置零 setZeroes 84.柱状图中最大的矩形 largestRectangleArea 152.乘积最大子序列 maxProduct 162.寻找峰值 findPeakElement 动态规划 5.最长回文子串 longestPalindrome(中心扩展法实现) 62.不同...

    lrucacheleetcode-leetcode:leetcode

    lru缓存leetcode 力码 LeetCode 问题的解决方案。 个人资料在这里:。 简单的 ...plus_one.py: remove_element.py: reverse_vowels.py: 千位分隔符.py: transpose_matrix.py: trim_bst.py: two

    leetcode2sumc-Leetcode_questions:Leetcode_questions

    66.Plus One (c++) 67.添加二进制(C++) 69.Sqrt(x) (c++:二元除法) 70.Climbing Stairs(c++:Dynamic Programming) 83.从排序列表中删除重复项(c++) 88.Merge Sorted Array(c++) 00 94.Binary Tree Inorder ...

    leetcode双人赛-leetcode-solution:没事可做的时候,就来刷刷题吧

    leetcode双人赛 leetcode-solution 闲暇之余,刷一下题,弥补数据结构和算法的短板 概述 之前写过一个 ...plus-one 合并两个有序数组 merge-sorted-array 杨辉三角 pascals-triangle 杨辉三角 II pa

    leetcode-js:算法和数据结构是一个程序员的灵魂,LeetCode JavaScript TypeScript 题解

    66.加一 (Plus One) 67.二进制求和 (Add Binary) 69.x 的平方根 (Sqrt(x)) 70.爬楼梯 (Climbing Stairs) 83.删除排序链表中的重复元素 (Remove Duplicates from Sorted List) 88.合并两个有序数组 (Merge Sorted ...

    谷歌师兄的leetcode刷题笔记-BST-Plus:WordPress的Bootstrap3入门主题,具有WooCommerce支持、大型菜

    谷歌师兄的leetcode刷题笔记#BST 加 版本 3.6.3 BST Plus 是一个 WordPress Bootstrap 入门主题。 它内置了越来越多的可选附加组件。示例:悬停时的导航栏下拉菜单 ('Hovernav')、导航栏大型菜单 ('Meganav') 和 ...

    lrucacheleetcode-leetcode:记录自己的leetcode解题历程~Welcomeeveryonetocomment:grinning_face:~

    Plus One 238. Product of Array Except Self 697. Degree of an Array 849. Maximize Distance to Closest Person ——————————————————————————————————————————————...

    圆和矩形是否重叠leetcode-leetcode_solutions:leetcode_solutions

    圆和椭圆重叠leetcode ——#158 尖端 关心特殊情况 从不同的方向思考 简单的 大批 1.Two Sum -&gt; 使用哈希表避免遍历列表448.查找数组中消失的所有数字-&gt; 1.建立缓冲区来计算数字| 2.使用数组作为带符号的缓冲区118....

Global site tag (gtag.js) - Google Analytics