반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 사칙연산
- 자료 구조
- 연결리스트 정렬
- 이분 탐색
- 큰 수 연산
- 브루트포스 알고리즘
- LeetCode 83 c언어
- 구현
- 해시를 사용한 집합과 맵
- 정수론
- LeetCode 83번
- 스택
- 프로그래머스
- 정렬
- 재귀
- 별 찍기
- Queue
- 문자열제곱
- 큐
- KMP알고리즘
- 실패함수
- 임의 정밀도 / 큰 수 연산
- 시뮬레이션
- 수학
- 다이나믹 프로그래밍
- LeetCode Remove Duplicates from Sorted List in c
- 문자열
- 유클리드 호제법
- 조합론
- 연결리스트 중복제거
Archives
- Today
- Total
hahn
[LeetCode - C] 66. Plus One 본문
728x90
반응형
Plus One - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
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.
Solution 1
일의 자리에 해당되는 부분 1을 증가시키고
그에 맞게 새로운 ret에 malloc 하여 리턴했다.
일의 자리에 해당되는 부분이 10이 되면
한 자릿수 늘어나니 그에 맞춰 처리했다.
int *plusOne(int *digits, int digitsSize, int *returnSize)
{
int idx;
int *ret;
idx = digitsSize - 1;
digits[idx]++;
while (idx)
{
if (digits[idx] == 10)
{
digits[idx] = 0;
digits[idx - 1]++;
}
idx--;
}
if (digits[idx] == 10)
{
ret = (int *)malloc(sizeof(int) * (digitsSize + 1));
ret[0] = 1;
digits[0] = 0;
*returnSize = digitsSize + 1;
}
else
{
ret = (int *)malloc(sizeof(int) * digitsSize);
*returnSize = digitsSize;
}
while (idx < digitsSize)
{
if (!digits[0])
ret[idx + 1] = digits[idx];
else
ret[idx] = digits[idx];
idx++;
}
return (ret);
}
728x90
반응형
'코딩테스트 연습 > LeetCode(C - Easy)' 카테고리의 다른 글
[LeetCode - C] 69. Sqrt(x) (0) | 2022.04.18 |
---|---|
[LeetCode - C] 67. Add Binary (0) | 2022.04.18 |
[LeetCode - C] 58. Length of Last Word (0) | 2022.04.12 |
[LeetCode - C] 53. Maximum Subarray (0) | 2022.04.12 |
[LeetCode - C] 35. Search Insert Position (0) | 2022.04.06 |