LeetCode 每日一题笔记 日期:2026.05.29 题目:3300. 最小元素

LeetCode 每日一题笔记

0. 前言

  • 日期:2026.05.29
  • 题目:3300. 最小元素
  • 难度:简单
  • 标签:数组、数学

1. 题目理解

问题描述 :

给定一个整数数组 nums,将数组中每个元素替换为它的各位数字之和 ,返回替换后的数组中的最小值。

示例:

输入:nums = 10,12,13

输出:1

解释:各位和分别为 1、3、4,最小值是 1。

2. 解题思路

核心观察

  • 求数字的各位和有两种方式:字符串遍历、数学取模运算。
  • 数学法效率更高,无需字符串转换,减少开销。

算法步骤

  1. 遍历数组所有元素。
  2. 对每个数字,循环取余累加得到各位和。
  3. 记录最小的各位和。

3. 代码实现

java 复制代码
package lc3300;

public class Solution {
    public int minElement(int[] nums) {
        int res = Integer.MAX_VALUE;
        for (int i = 0; i < nums.length; i++) {
            String s = String.valueOf(nums[i]);
            int curRes = 0;
            for (int j = 0; j < s.length(); j++) {
                int num = s.charAt(j) - '0';
                curRes += num;
            }

            res = Math.min(res, curRes);
        }
        return res;
    }
}

4. 代码优化说明

(代码未做任何修改,仅添加注释讲解)

java 复制代码
class Solution {
public int minElement(int[] nums) {
    // 获取数组长度
    int len = nums.length;
    // 初始化最小值为整型最大值
    int min = Integer.MAX_VALUE;

    // 遍历数组中的每一个数字
    for (int i = 0; i < len; i++) {
        int num = nums[i];
        // 存储当前数字的各位之和
        int temp = 0;

        // 循环计算各位和:取最后一位累加,然后移除最后一位
        while (num > 0) {
            temp += num % 10;
            num /= 10;
        }

        // 更新最小值
        min = Math.min(min, temp);
    }

    return min;
}
}

5. 复杂度分析

  • 时间复杂度 :O(n×d)O(n \times d)O(n×d)
    n 为数组长度,d 为数字最大位数,整体接近线性复杂度。
  • 空间复杂度 :O(1)O(1)O(1)
    仅使用常数级变量,无额外空间。

6. 总结

  • 核心:数学取模求各位和,比字符串方式更高效。
  • 优化点:去掉字符串转换操作,纯数值运算提升性能。
  • 关键技巧:num % 10 取最后一位,num /= 10 去掉最后一位。
相关推荐
一壶浊酒伴余生2 小时前
新概念英语第一册 · 句法笔记
笔记·英语学习·英语语法·新概念英语
蒸蒸yyyyzwd5 小时前
后端学习笔记 day111
笔记·学习
叼烟扛炮6 小时前
[LangChain] 学习笔记(08):工具调用底层闭环与第三方搜索(Tavily)实战
人工智能·笔记·学习·langchain
江屿风7 小时前
【Git-组件】【Git入门:从文档灾难到版本掌控】流食般投喂
运维·笔记·git·组件·版本控制
小李不想当小白8 小时前
HAL库之UART(STM32 HAL库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
旖旎夜光9 小时前
【C++ 基础入门】C++ 多态(中):虚函数表、多态原理与动静绑定
开发语言·c++·笔记·学习
Rain的Java大神之路9 小时前
LeetCode 37 解数独面试攻略:回溯 + 位掩码 + MRV,从暴力到毫秒级求解
java·后端·leetcode
旖旎夜光10 小时前
【C++ 基础入门】C++多态(下):单/多继承虚表、多态补充与 21 道高频题
开发语言·c++·笔记·学习
Pniubi10 小时前
力扣73 矩阵置零
算法·leetcode·矩阵
叼烟扛炮15 小时前
[LangChain] 学习笔记(07):大模型长出手脚——工具(Tools)定义与调用闭环
笔记·学习·langchain