力扣每日一题:数位和相等数对的最大和
开篇
这道每日一题还是挺需要思考的,我绕晕了好久,根据题解的提示才写出来。
题目链接: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的数位为81int 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;///返回最大值}
}
结语
如果这道题的分享对你有帮助,点个关注,我会每天更新力扣题的讲解,与大家一起进步。