nineloong'sblog
首页归档照片墙音乐杂谈友链关于
封面
点击查看全图

每日一题:替换后的最小元素

2026/5/29
# 每日一题

题目描述

LeetCode 3300 — 替换后的最小元素 (Easy)

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

示例 1:

  • 输入:nums = [10, 12, 13, 14]
  • 输出:1
  • 解释:10 → 1+0 = 1,12 → 1+2 = 3,13 → 1+3 = 4,14 → 1+4 = 5,最小值为 1。

示例 2:

  • 输入:nums = [1, 2, 3, 4]
  • 输出:1
  • 解释:每个元素只有一位,替换后不变,最小值为 1。

约束:

  • 1 <= nums.length <= 100
  • 1 <= nums[i] <= 10^4

求解思路

对每个数算各位数字之和,然后取最小值即可。

逐位求和就是不断地对 10 取余得到末位数字,再整除 10 去掉末位,直到数字变成 0 为止。


解法:逐位求和

#include <vector>
using namespace std;

class Solution {
public:
    int minElement(vector<int>& nums) {
        int minans = 1e9;
        for (int i = 0; i < nums.size(); i++) {
            int temp = nums[i];
            int ans = 0;
            // 逐位累加数字之和
            while (temp != 0) {
                ans += (temp % 10);
                temp /= 10;
            }
            nums[i] = ans;
            minans = min(ans, minans);
        }
        return minans;
    }
};

复杂度: 时间 O(n⋅d)O(n \cdot d)O(n⋅d),nnn 为数组长度,ddd 为最大元素的位数;空间 O(1)O(1)O(1)。


相关题目

  • LeetCode 258 — 各位相加
  • LeetCode 202 — 快乐数
  • LeetCode 1281 — 整数的各位积和之差
  • LeetCode 2544 — 交替数字和
avatar

nineloong

一隅之地,深耕自我

RECOMMENDED

二分查找:从经典模板到应用题

2026/5/23

每日一题:检查数组是否经排序和轮转得到

2026/5/23

每日一题:统计特殊字母的数量 II

2026/5/27

Table of Contents