LC-加一和ArrayList轉成陣列

一_月發表於2020-09-29
package leetcode.array;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

/**
 *
 * 2020/9/29 22:39
 * 報錯了,當數較大時溢位了,應該考慮使用字串或者考慮大數,但是大數有可能會更復雜。
 * 學習內容:
 * 1、ArrayList反轉,Collections.reverse(arrayList);
 * 2、ArrayList轉換成String,Integer
 *         // 建立一個新的 Integer 型別的陣列
 *         // 陣列長度和 ArrayList 長度一樣
 *         Integer[] arr = new Integer[list.size()];
 *         // 將ArrayList物件轉換成陣列
 *         list.toArray(arr);
 *         此時返回Object[],或者Integer[]
 * 3、ArrayList轉換成int,
 *          int[] arr1 = list1.stream().mapToInt(Integer::valueOf).toArray();
 *         // 想要轉換成int[]型別,就得先轉成IntStream。
 *         // 這裡就通過mapToInt()把Stream<Integer>呼叫Integer::valueOf來轉成IntStream
 *         // 而IntStream中預設toArray()轉成int[]。
 */
public class PlusOne {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3};
        System.out.println(Arrays.toString(plusOne(nums)));
    }

    public static int[] plusOne(int[] digits) {
        int num = digits[0];
        for (int i = 1; i < digits.length; i++) {
            num = num * 10 + digits[i];
        }
        num++;
        ArrayList<Integer> list = new ArrayList<>();
        while (num > 0) {
            list.add(num % 10);
            num /= 10;
        }
        Collections.reverse(list);
        return list.stream().mapToInt(Integer::valueOf).toArray();
    }
}

參考連結:
Java中List, Integer[], int[]的相互轉換

相關文章