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 去掉最后一位。
相关推荐
NetX行者1 小时前
Rust 初体验:一个全栈工程师的编译器“毒打“笔记
开发语言·笔记·rust
文丑颜不良啊1 小时前
LeetCode1~50题目解析
leetcode
Pniubi2 小时前
力扣146.LRU缓存机制
算法·leetcode·缓存
热爱生活的五柒2 小时前
zotero能导入已经下载好的pdf文件嘛,并且点击条目时,能直接看到下载的pdf文件嘛,我还希望能在里面做笔记
笔记·pdf
海绵宝宝转agent3 小时前
2026-10-19学习笔记
笔记·学习
金色光环3 小时前
【概率论详细笔记】泊松分布是怎么来的?应该怎么用?
笔记·概率论
又見山3 小时前
双向链接的本质:链接不是功能,是思考留下的痕迹
笔记·obsidian
云水初3 小时前
【agent篇】RAG Agent避坑指南(附高级RAG Agent汇总)
开发语言·笔记·python·学习·langchain·agent·rag
JasmineX-14 小时前
数据结构(笔记)——顺序栈
c语言·数据结构·笔记
坤坤子吖4 小时前
Linux 线程同步与互斥——互斥锁
linux·服务器·c++·笔记·学习