Nội dung bài toán
Cho một mảng số nguyên không rỗng đại diện cho một số nguyên không âm, hãy tăng số đó lên một đơn vị.
Số ở vị trí đầu tiên của mảng là chữ số hàng cao nhất. Mỗi phần tử trong mảng chỉ chứa một chữ số duy nhất. Bạn có thể giả định rằng số nguyên này không bắt đầu bằng số 0, trừ khi nó là số 0.
Ví dụ
Ví dụ 1:
Input: digits = [1,2,3]
Output: [1,2,4]
Giải thích: Mảng đầu vào đại diện cho số 123.
Ví dụ 2:
Input: digits = [4,3,2,1]
Output: [4,3,2,2]
Giải thích: Mảng đầu vào đại diện cho số 4321.
Ví dụ 3:
Input: digits = [9]
Output: [1,0]
Giải thích: Mảng đầu vào đại diện cho số 9. Khi tăng lên 1, ta được 10.
Yêu cầu
- 1 <= digits.length <= 100
- 0 <= digits[i] <= 9
Mã nguồn
package org.example;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Nhập kích thước mảng
int size = scanner.nextInt();
// Tạo mảng với kích thước đã nhập
int[] myArray = new int[size];
System.out.println("Nhập " + size + " phần tử:");
// Nhập các phần tử của mảng
for (int i = 0; i < size; i++) {
myArray[i] = scanner.nextInt();
}
scanner.close();
// Tạo đối tượng để gọi phương thức non-static
Main obj = new Main();
int[] result = obj.addOne(myArray);
System.out.println(Arrays.toString(result));
}
public int[] addOne(int[] digits) {
int n = digits.length;
for (int i = n - 1; i >= 0; i--) {
if (digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
// Trường hợp tất cả các chữ số đều là 9
int[] newDigits = new int[n + 1];
newDigits[0] = 1;
return newDigits;
}
}
Lưu ý
- Để in mảng, sử dụng
Arrays.toString(re)hoặcArrays.stream(re).mapToObj(String::valueOf).reduce((a, b) -> a + ", " + b).orElse("[]"). - Trong phương thức tĩnh, cần tạo đối tượng để gọi phương thức non-static.
- Khởi tạo mảng mới với kích thước lớn hơn 1 khi tất cả các chữ số đều là 9.