力扣每日一题:数位和相等数对的最大和
开篇
这道每日一题还是挺需要思考的,我绕晕了好久,根据题解的提示才写出来。
题目链接:2342.数位和相等数对的最大和
题目描述
代码思路
1.创建一个数组存储每个数位的数的最大值,创建一个数存储相加最大值
2.循环遍历每个原数组元素进行判断,先算出其数位,如果之前已有该数位的数,则进行相加,并与增强相加的最大值进行比较,判断是否需要进行修改
3.把存储数位的数组更新
代码纯享版
class Solution {
public int maximumSum(int[] nums) {
int[] maxnum = new int[82];
int max = -1;
for(int i: nums){
int num = 0;
int j = i;
while(j > 0){
num += j % 10;
j /= 10;
}
if(a[num] > 0){
max = Math.max(max, maxnum[num] + i);
}
maxnum[num] = Math.max(i, maxnum[num]);
}
return max;
}
}
代码逐行解析版
class Solution {
public int maximumSum(int[] nums) {
int[] maxnum = new int[82]; //题目中nums[i]的最大值10^9的数位为81
int max = -1; //统计最大值
for(int i: nums){
int num = 0; //i的数位
int j = i;
while(j > 0){ //i的数位:通过下面while循环取出其数位
num += j % 10;
j /= 10;
}
if(a[num] > 0){ //a[num]>0说明之前已经有这个数位的数存在,且是这个数位的最大值
max = Math.max(max, maxnum[num] + i); //更新最大值
}
maxnum[num] = Math.max(i, maxnum[num]); //更新这个数位
}
return max;///返回最大值
}
}
结语
如果这道题的分享对你有帮助,点个关注,我会每天更新力扣题的讲解,与大家一起进步。