2342.数位和相等数对的最大和

​​题目来源:

leetcode题目,网址:2342. 数位和相等数对的最大和 - 力扣(LeetCode)

解题思路:

哈希表,根据数位和分组后,计算每组中最大两个数之和,然后返回最大值即可。

解题代码:

复制代码
class Solution {
public:
    int maximumSum(vector<int>& nums) {
        int res=-1;
        unordered_map<int,vector<int>> map=getSumOfDigits(nums);
        for(auto it=map.begin();it!=map.end();it++){
            if(it->second.size()!=2){
                continue;
            }
            res=max(it->second[0]+it->second[1],res);
        }
        return res;
    }
    unordered_map<int,vector<int>> getSumOfDigits(vector<int>& nums){
        unordered_map<int,vector<int>> res;   //保存最大的两个数,最大,次大
        for(int num:nums){
            int sum=getSumOfDigit(num);
            vector<int> temp=res[sum];
            if(temp.size()==0){
                temp.push_back(num);
            }else if(temp.size()==1){
                int bigger=max(temp[0],num);
                int smaller=min(temp[0],num);
                temp[0]=bigger;
                temp.push_back(smaller);
            }else{
                if(num>=temp[0]){
                    temp[1]=temp[0];
                    temp[0]=num;
                }else if(num>temp[1]){
                    temp[1]=num;
                }
            }
            res[sum]=temp;
        }
        return res;
    }
    int getSumOfDigit(int num){
        int res=0;
        while(num!=0){
            res+=(num%10);
            num=num/10;
        }
        return res;
    }
};
复制代码

总结:

无官方题解。


相关推荐
智者知已应修善业几秒前
【51单片机LED贪吃蛇】2023-3-27
c语言·c++·经验分享·笔记·嵌入式硬件·51单片机
Demon--hx1 小时前
[C++]迭代器
开发语言·c++
BanyeBirth1 小时前
C++窗口问题
开发语言·c++·算法
2501_941805934 小时前
人工智能与大数据:驱动新时代的创新与决策
leetcode
郝学胜-神的一滴5 小时前
Qt的QSlider控件详解:从API到样式美化
开发语言·c++·qt·程序人生
橘颂TA5 小时前
【剑斩OFFER】算法的暴力美学——连续数组
c++·算法·leetcode·结构与算法
学困昇6 小时前
C++11中的{}与std::initializer_list
开发语言·c++·c++11
郝学胜-神的一滴6 小时前
Qt的QComboBox控件详解:从API到样式定制
开发语言·c++·qt·程序人生·个人开发
程序喵大人8 小时前
推荐个C++高性能内存分配器
开发语言·c++·内存分配
zephyr058 小时前
深入浅出C++多态:从虚函数到动态绑定的完全指南
开发语言·c++