目标
给定一个正整数 n。
返回 任意两位数字 相乘所得的 最大 乘积。
注意:如果某个数字在 n 中出现多次,你可以多次使用该数字。
示例 1:
输入: n = 31
输出: 3
解释:
n 的数字是 [3, 1]。
任意两位数字相乘的结果为:3 * 1 = 3。
最大乘积为 3。
示例 2:
输入: n = 22
输出: 4
解释:
n 的数字是 [2, 2]。
任意两位数字相乘的结果为:2 * 2 = 4。
最大乘积为 4。
示例 3:
输入: n = 124
输出: 8
解释:
n 的数字是 [1, 2, 4]。
任意两位数字相乘的结果为:1 * 2 = 2, 1 * 4 = 4, 2 * 4 = 8。
最大乘积为 8。
说明:
- 10 <= n <= 10^9
思路
给定一个数字 n,选择数位中的两个数字相乘,返回乘积的最大值。
找到最大的两个数字相乘即可。
代码
/**
* @date 2026-07-27 14:22
*/
public class MaxProduct3536 {
public int maxProduct(int n) {
int max = 0;
int preMax = 0;
int res = 0;
while (n > 0) {
int d = n % 10;
if (d >= preMax) {
preMax = Math.min(max, d);
max = Math.max(max, d);
res = Math.max(res, max * preMax);
}
n /= 10;
}
return res;
}
}
性能
