@SomeBottle 在 Leetcode每日一题 —— 3536. 两个数字的最大乘积 中发帖
思路
因为输入规模很小,最多也就涉及 10 个数字,完全可以逐位拆出来然后成对枚举。
但其实,在拆数位的时候我们就可以维护次大值和最大值,最后直接把次大值和最大值相乘即可,也算是一种贪心思想吧。
代码
class Solution {
public:
int maxProduct(int n) {
// 根据输入规模,最大只可能有 10 个数字,直接暴力就可以
// 暴力时我们可以逐位把数拆出来放到数组
// 最终我们枚举每对乘积看谁最大
// 按贪心的角度想,我们完全可以在拆位的时候就找到最大值和次大值
int maxVal=0,subMax=0;
while(n>0){
int d=n%10;
if(d>maxVal){
...