엔지니어 게시판
LeetCode 솔루션 분류

[Easy - wk2 - Q5] 66. Plus One

• Chloe 작성
• 작성일

• 263 조회
• 3 댓글

본문

You are given a large integer represented as an integer array `digits`, where each `digits[i]` is the `ith` digit of the integer. The digits are ordered from most significant to least significant in left-to-right order. The large integer does not contain any leading `0`'s.

Increment the large integer by one and return the resulting array of digits.

Example 1:

```Input: digits = [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.
Incrementing by one gives 123 + 1 = 124.
Thus, the result should be [1,2,4].
```

Example 2:

```Input: digits = [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.
Incrementing by one gives 4321 + 1 = 4322.
Thus, the result should be [4,3,2,2].
```

Example 3:

```Input: digits = [9]
Output: [1,0]
Explanation: The array represents the integer 9.
Incrementing by one gives 9 + 1 = 10.
Thus, the result should be [1,0].
```

Constraints:

• `1 <= digits.length <= 100`
• `0 <= digits[i] <= 9`
• `digits` does not contain any leading `0`'s.

댓글 3

bohuim님의 댓글

• bohuim
• 작성일
``````def soln(d): # -> [int]
r = list(reversed(d))

carry = 1
for i in range(0, len(r)):
final = r[i] + carry
r[i] = int(final % 10)
carry = int(final / 10)
if carry > 0:
r.append(carry)
return list(reversed(r))

class Solution(object):
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
return soln(digits)
``````

Jack님의 댓글

• Jack
• 작성일
Python

Runtime: 33 ms, faster than 86.26% of Python3 online submissions for Plus One.
Memory Usage: 13.9 MB, less than 60.16% of Python3 online submissions for Plus One.

``````class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
carry=0
index=-1

for i in digits[::-1]:
if carry :
s=carry + int(i)
else:
s=int(i)+1

if s < 10:
digits[index]=s
return digits
else:
digits[index]=0
carry=1
index += -1

return [1] + digits``````

Python - Approach 1: Schoolbook Addition with Carry
Time complexity: O(N)
Space complexity: O(N)

Runtime: 66 ms, faster than 8.70% of Python3 online submissions for Plus One.
Memory Usage: 13.8 MB, less than 96.95% of Python3 online submissions for Plus One.

``````class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
n = len(digits)

# move along the input array starting from the end
for i in range(n):
idx = n - 1 - i
# set all the nines at the end of array to zeros
if digits[idx] == 9:
digits[idx] = 0
# here we have the rightmost not-nine
else:
# increase this rightmost not-nine by 1
digits[idx] += 1
# and the job is done
return digits

# we're here because all the digits are nines
return [1] + digits``````

Runtime: 35 ms, faster than 82.81% of Python3 online submissions for Plus One.
Memory Usage: 13.8 MB, less than 60.16% of Python3 online submissions for Plus One.
``````
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
strnum = "".join([str(x) for x in digits])
num = int(strnum)
resN = num + 1
return [x for x in str(resN)]
``````

dawn27님의 댓글

• dawn27
• 작성일
처음에는 array를 string으로 join 시켜서,

Number() 또는 parseInt() built-in function을 사용하여 숫자화 한 다음,

+=1 플러스 원을 하고,

다시 array로 digit 하나하나를 넣었습니다.

그런데 input으로 받아오는 array에 digit이 16개가 넘어가는 모든 숫자들은 Number() 또는 parseInt() 하는 과정에서
자동으로 0 으로 처리가 되어지더라구요...
이 문제로 지난 주 디스코드 시간에 저희 챗방 운영진분께서 도움을 주셔서, 다른 방법으로 해결 할 수가 있었습니다:)

알고보니 2 byte가 넘어가면, 제한이 걸리다는 내용이었습니다.

``````const plusOne = (array) => {
for (let i = array.length-1; i >= 0; i--) {
if (array[i] === 9) {
array[i] = 0;
}
else  {
array[i] = array[i]+=1;
return array;
}
}
array.unshift(1);
return array;
}``````
전체 85 / 1 페이지

• 등록일 05.21
• 등록일 05.21
• 등록일 05.21
• 등록일 05.21
• 등록일 05.21
• 등록일 05.21
• 등록일 05.21
• 등록일 05.21
• 등록일 05.21

새댓글

• 등록자 뚝배기 등록일 05.21
• 등록자 coderoncruise 등록일 05.21
• 등록자 coderoncruise 등록일 05.21
• 등록자 Connie 등록일 05.21
• 등록자 JakeMinSVK 등록일 05.21
• 등록자 JakeMinSVK 등록일 05.21
• 등록자 Connie 등록일 05.20
• 등록자 Jack 등록일 05.20
• 등록자 Connie 등록일 05.19
• 등록자 Connie 등록일 05.19

Stats

• 현재 접속자 82 명
• 오늘 방문자 140 명
• 어제 방문자 938 명
• 최대 방문자 1,221 명
• 전체 회원수 216 명