【教3妹学编程-算法题】数位和相等数对的最大和
  96AOqGW9dKgh 2023年11月19日 31 0

【教3妹学编程-算法题】数位和相等数对的最大和_数位

3妹:2哥,你有没有看到新闻“18岁父亲为4岁儿子落户现身亲子鉴定”
2哥 : 啥?18岁就当爹啦?
3妹:确切的说是14岁好吧。
2哥 : 哎,想我30了, 还是个单身狗。
3妹:别急啊, 2嫂肯定在某个地方等着你去娶她呢。又不是结婚越早越好。
2哥:是啊, 这孩子14岁当爹,也太早了。
3妹:2哥,你找女朋友有什么条件没有哇?
2哥 : emmm, 以前希望找一个温柔漂亮的, 现在嘛, 女的、活的。毕竟年龄已经很大了, 已经30了…
3妹:才30而已嘛, 女生很多都喜欢找个比自己大一点的~
2哥 : 哎,你们女生最大能接受比自己大多少岁啊?
3妹:emmm, 这么不好说,要看具体女生,一般大个3-5岁都可以吧。 2哥说到最大, 我今天看到一个最大和的题目,让我也来考考你吧~

【教3妹学编程-算法题】数位和相等数对的最大和_Math_02

 1题目: 

给你一个下标从 0 开始的数组 nums ,数组中的元素都是 正 整数。请你选出两个下标 i 和 j(i != j),且 nums[i] 的数位和 与  nums[j] 的数位和相等。

请你找出所有满足条件的下标 i 和 j ,找出并返回 nums[i] + nums[j] 可以得到的 最大值 。

示例 1:

输入:nums = [18,43,36,13,7]
输出:54
解释:满足条件的数对 (i, j) 为:

  • (0, 2) ,两个数字的数位和都是 9 ,相加得到 18 + 36 = 54 。
  • (1, 4) ,两个数字的数位和都是 7 ,相加得到 43 + 7 = 50 。
    所以可以获得的最大和是 54 。
    示例 2:

输入:nums = [10,12,19,14]
输出:-1
解释:不存在满足条件的数对,返回 -1 。

提示:

1 <= nums.length <= 10^5
1 <= nums[i] <= 10^9

 2思路: 

【教3妹学编程-算法题】数位和相等数对的最大和_数组_03

排序+模拟,
详细见代码:

 3java代码: 

class Solution {
    public int maximumSum(int[] nums) {
        Arrays.sort(nums);
           int max1=-1;
           Map<Integer,Integer> map=new HashMap();
           for(int i=0;i<nums.length;i++){
               int val=get(nums[i]);
               if(!map.containsKey(val)){
                   map.put(val,nums[i]);
               }else{
                 max1=Math.max(map.get(val)+nums[i],max1);
                   map.put(val,nums[i]);       
               }
           }
           return max1;
    }


    public int get(int num){
        int s=0;
        while(num>0){
            s=s+num%10;
            num=num/10;
        }
        return s;
    }
}


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
96AOqGW9dKgh