问题描述:
给你一个四位 正 整数 num 。请你使用 num 中的 数位 ,将 num 拆成两个新的整数 new1 和 new2 。new1 和 new2 中可以有 前导 0 ,且 num 中 所有 数位都必须使用。
比方说,给你 num = 2932 ,你拥有的数位包括:两个 2 ,一个 9 和一个 3 。一些可能的 [new1, new2] 数对为 [22, 93],[23, 92],[223, 9] 和 [2, 329] 。
请你返回可以得到的 new1 和 new2 的 最小 和。
样例 1:
输入:
num = 2932
输出:
52
解释:
可行的 [new1, new2] 数对为 [29, 23] ,[223, 9] 等等。
最小和为数对 [29, 23] 的和:29 + 23 = 52 。
样例 2:
输入:
num = 4009
输出:
13
解释:
可行的 [new1, new2] 数对为 [0, 49] ,[490, 0] 等等。
最小和为数对 [4, 9] 的和:4 + 9 = 13 。
提示:
1000 <= num <= 9999
————————————————
上代码拿去即可运行:
package com.onlyqi.daydayupgo01.test;
import java.util.ArrayList;
import java.util.List;
public class test11 {
public static void main(String[] args) {
int[] nums = smallNums(4009);
int sum=nums[0]+nums[1];
System.out.println("============onlyqi=========="+sum);
}
public static int[] smallNums(int num) {
int[] nums = new int[2];
int a = num % 10;
int b = (num / 10) % 10;
int c = (num / 100) % 10;
int d = (num / 1000) % 10;
List<Integer> numList = new ArrayList<>();
numList.add(a);
numList.add(b);
numList.add(c);
numList.add(d);
numList.sort(Integer::compareTo);
System.out.println(numList);
Integer minOne = numList.get(0) * 10 + numList.get(3);
Integer minTwo = numList.get(1) * 10 + numList.get(2);
nums[0] = minOne;
nums[1] = minTwo;
return nums;
}
}
运行结果:
我要刷300道算法题,第114道 。 好久好久没写算法了,今天开始写,先从一个最简单的开始。希望自己可以坚持下去。