LeetCode 3536.两个数字的最大乘积:O(1)空间维护max2

【LetMeFly】3536.两个数字的最大乘积:O(1)空间维护max2

力扣题目链接:https://leetcode.cn/problems/maximum-product-of-two-digits/

给定一个正整数 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 <= 109

解题方法:求n每一位 + 维护最大两值

怎么求出 n n n在十进制下的每一位?

当 n ≠ 0 n\neq 0 n=0时候,取出 n % 10 n\ \%\ 10 n % 10,并令 n = ⌊ n 10 ⌋ n=\lfloor\frac{n}{10}\rfloor n=⌊10n⌋。

如何维护最大两个值?

初始时候最大值 m x 2 mx2 mx2和第二大值 m x 1 mx1 mx1都为 0 0 0。

  • 如果 n n n的某一位 t t t比最大值 m x 2 mx2 mx2还大,则令 m x 1 = m x 2 mx1=mx2 mx1=mx2并令 m x 2 = t mx2=t mx2=t;
  • 否则如果 t t t比次大值 m x 1 mx1 mx1大,则令 m x 1 = t mx1=t mx1=t。

最终返回最大值和次大值之积。

  • 时间复杂度 O ( log ⁡ n ) O(\log n) O(logn)
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
cpp 复制代码
/*
 * @LastEditTime: 2026-07-25 22:11:39
 */
class Solution {
public:
    int maxProduct(int n) {
        int mx1 = 0, mx2 = 0;
        while (n) {
            int t = n % 10;
            n /= 10;
            if (t > mx2) {
                mx1 = mx2;
                mx2 = t;
            } else if (t > mx1) {
                mx1 = t;
            }
        }
        return mx1 * mx2;
    }
};

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

相关推荐
程序喵大人4 小时前
【C++进阶】STL算法与函数对象 - 09 函数对象保存状态并复用规则
开发语言·c++·算法·stl·函数对象
致Great9 小时前
DeepSeek Harness插件开发实战教程:我让它自己写了一个 arXiv 搜索插件
算法
罗西的思考13 小时前
【Agent OS / AIOS】AOHP 深度解读:当 OS 开始为 Agent 而设计
人工智能·算法·机器学习
民乐团扒谱机14 小时前
【微实验】组合优化matlab实战(马科维茨投资模型):在收益与风险之间,寻找最优的人生配比
大数据·人工智能·算法·机器学习·数学建模·matlab·组合优化
Nil20815 小时前
leetcode 160相交链表
算法·leetcode·链表
迷途之人不知返16 小时前
算法系列2:滑动窗口
算法
Herbert_hwt16 小时前
C语言零基础入门:循环控制与数据类型详解
c语言·数据结构·算法
ZC跨境爬虫17 小时前
LeetCode 108. 将有序数组转换为二叉搜索树(递归构建详解 + Java Python 实现)
java·python·leetcode
Tisfy17 小时前
LeetCode 3090.每个字符最多出现两次的最长子字符串:二重循环 / 滑动窗口
算法·leetcode·字符串·题解·模拟·双指针·滑动窗口
-dzk-17 小时前
【技巧】LC 136.只出现一次的数字
算法·异或