题目描述
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 <= 1001 <= 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;
}
};
复杂度: 时间 , 为数组长度, 为最大元素的位数;空间 。
