Leetcode 高精度 Plus One

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie

Plus One

Total Accepted: 17614 Total
Submissions: 55852My Submissions

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.

题意:给定一个由数组表示大整数,数组的每一个元素对应该数的十进制表示的每一位,对该数进行加 1 操作

思路:高精度加法

复杂度:时间:O(n)

vector<int> plusOne(vector<int> &digits){
	int carry = 1;
	for(auto it = digits.rbegin(); it != digits.rend(); ++it){
		int tmp = *it + carry;
		*it = tmp % 10;
		carry = tmp / 10;
		if(!carry) break;
	}
	if(carry) digits.insert(digits.begin(), carry);
	return digits;
}

时间: 2024-10-22 06:43:47

Leetcode 高精度 Plus One的相关文章

leetcode 66. Plus One(高精度加法)

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. 题解:简单的高精度加法,要注意[9]这种输入,要多一位. class Solution { public: vector<int> plusOne(v

leetcode 67. Add Binary (高精度加法)

Given two binary strings, return their sum (also a binary string). For example,a = "11"b = "1"Return "100". 简单的二进制高精度加法. class Solution { public: string addBinary(string a, string b) { string ans=""; int c=0,i=a.len

Leetcode medium难度顺序题解

被迫重操旧业(?) 再不刷题面试就真要翻车了.... 好在medium题难度还比较水,幸亏它不考什么神DP或数据结构或blabla不然我还面个锤子(x) 但是现场写代码还不准出错ATP顶8住啊所以还是练练手感叭.... 就,按顺序随便做几个.点中等难度然后按题号排序这样. 2. 两数相加 高精度但是用单向链表. 一开始ATP写的很麻烦,基本思路是先把两个数字重叠的部分相加,然后再单独处理较长的数字多出来的那部分,然后再处理进位这样.一共三个while循环. 但是后来发现好像直接改一下判断条件,如

Leetcode刷题第三期Week1——模拟

题目列表来自yxc大佬的AcWing Leetcode提高班第三期 Leetcode 263 Ugly Number 注意:特别地,1是Ugly Number 没什么要注意的,三个循环搞定 class Solution { public: bool isUgly(int num) { if(num <= 0) return false; while(num % 2 == 0) num = num / 2; while(num % 3 == 0) num = num / 3; while(num

LeetCode43,一题让你学会高精度算法

本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode系列第22篇文章,今天讲的内容是高精度算法. 今天和大家讨论的算法是高精度,对应的LeetCode是第43题.题面其实没什么好说的,以字符串的形式给定两个数字,要求返回这两个数字的乘积.之所以是以字符串的形式给数字是因为这个数字可能会非常大,题目当中给定的范围是110位的数字.对于Python来说这不是问题,但是对于C++和Java等语言来说这么大的数字是无法以int类型存储的,所以必须要使用字符串来接收. 如果你

[LeetCode] 349 Intersection of Two Arrays &amp; 350 Intersection of Two Arrays II

这两道题都是求两个数组之间的重复元素,因此把它们放在一起. 原题地址: 349 Intersection of Two Arrays :https://leetcode.com/problems/intersection-of-two-arrays/description/ 350 Intersection of Two Arrays II:https://leetcode.com/problems/intersection-of-two-arrays-ii/description/ 题目&解法

LeetCode 442. Find All Duplicates in an Array (在数组中找到所有的重复项)

Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once. Find all the elements that appear twice in this array. Could you do it without extra space and in O(n) runtime? Example: Input: [4,3,2,7,

LeetCode OJ - Sum Root to Leaf Numbers

这道题也很简单,只要把二叉树按照宽度优先的策略遍历一遍,就可以解决问题,采用递归方法越是简单. 下面是AC代码: 1 /** 2 * Sum Root to Leaf Numbers 3 * 采用递归的方法,宽度遍历 4 */ 5 int result=0; 6 public int sumNumbers(TreeNode root){ 7 8 bFSearch(root,0); 9 return result; 10 } 11 private void bFSearch(TreeNode ro

LeetCode OJ - Longest Consecutive Sequence

这道题中要求时间复杂度为O(n),首先我们可以知道的是,如果先对数组排序再计算其最长连续序列的时间复杂度是O(nlogn),所以不能用排序的方法.我一开始想是不是应该用动态规划来解,发现其并不符合动态规划的特征.最后采用类似于LRU_Cache中出现的数据结构(集快速查询和顺序遍历两大优点于一身)来解决问题.具体来说其数据结构是HashMap<Integer,LNode>,key是数组中的元素,所有连续的元素可以通过LNode的next指针相连起来. 总体思路是,顺序遍历输入的数组元素,对每个