力扣每日一题-数位和相等数对的最大和-2023.11.18

    力扣每日一题:数位和相等数对的最大和

开篇

 这道每日一题还是挺需要思考的,我绕晕了好久,根据题解的提示才写出来。

题目链接: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;///返回最大值
    }
}

结语

 如果这道题的分享对你有帮助,点个关注,我会每天更新力扣题的讲解,与大家一起进步。

你可能感兴趣的:(Java算法,leetcode,算法,数据结构,java)