[leetcode] 15. 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.

然后我专门随便写了几段然后看了一下他的测试用例,结果明白题目到底是什么了,题意是说:给你一个非负的整数,然后每一位都分别存在数组的每一位上,比如1984会存成[1,9,8,4]这样。然后你给这个数组加个1,再把这个数按这个数组输出。

这套写法很简单,就是判断计算位是不是9,然后加1,然后进位就行。如果最高位是9还要考虑一下是否加一位就行。代码如下:

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

拿了一个flag来判断进位,操作都很简单。

时间: 2024-10-06 20:00:30

[leetcode] 15. Plus One的相关文章

[LeetCode]15. Pascal&#39;s Triangle杨辉三角

Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Return [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] 杨辉三角主要有下列五条性质: 杨辉三角以正整数构成,数字左右对称,每行由1开始逐渐变大,然后变小,回到1. 第行的数字个数为个. 第行的第个数字为组合数. 第行数字和为. 除每行最左侧与最右侧的数字以

LeetCode 15. 3Sum(三数之和)

Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution set must not contain duplicate triplets. For example, given array S = [-1,

LeetCode(15)题解--3Sum

https://leetcode.com/problems/3sum/ 题目: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: Elements in a triplet (a,b,c) must be in non-des

[LeetCode] 15. 3Sum

Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution set must not contain duplicate triplets. For example, given array S = [-1,

LeetCode(15) - 3Sum

这道题给你一个数组,找到所有三个数加起来等于0的数字并存到List里.暴力搜索的话大概要耗费O(n^3)的时间,但是如果这个数组是有序的话,搜索起来就会相对简单,排序大概要花费O(nlog(n))的时间,有序搜索只需要花费O(n^2)的时间,所以,思路是这样: 先排序. 外循环i纪录第一个数字,内循环采用2 pointer的方法,当sum>0,tail往左移,sum < 0,head往右移. 碰到sum = nums[i] + nums[head] + nums[tail]时,把三个数字存到l

leetcode 15. 3Sum 双指针

题目链接 给n个数, 找出三个数相加结果为0的所有的组, 不可重复. 用双指针的思想,O(n^2)暴力的找, 注意判重复. 1 class Solution { 2 public: 3 vector<vector<int>> threeSum(vector<int>& nums) { 4 int sz = nums.size(); 5 vector <vector<int> > ans; 6 vector <int> tmp;

[LeetCode][15]3Sum解析与快速排序算法-Java实现

Q: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution set must not contain duplicate triplets. For example, given array S = [-

LeetCode 15. 三数之和(3Sum)

题目描述 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以包含重复的三元组. 例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ] 解题思路 首先对数组从小到大排序,从一个数开始遍历,若该数大于0,后面的数不可能与其相加和为0,所以跳过:否则该数可能是满足要求

Leetcode 15. Sum(二分或者暴力或者哈希都可以)

15. 3Sum Medium Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution set must not contain duplicate triplets. Example: Giv

LeetCode #15 中等题(三数之合)

题目: 给定数组中找出所有满足三个数的合等于0的组合,不允许重复 题解: 就排序后,对每个数找其他两个数与它的和为0的组合,(发现LeetCode好喜欢双指针的题啊) class Solution { public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> ans; int len = (int)nums.size(); if(len &l