首页 > 编程语言 >【算法题】6939. 数组中的最大数对和

【算法题】6939. 数组中的最大数对和

时间:2023-10-15 13:01:09浏览次数:31  
标签:最大数 nums int max maxj 算法 maxi 6939 数位


题目:

给你一个下标从 0 开始的整数数组 nums 。请你从 nums 中找出和 最大 的一对数,且这两个数数位上最大的数字相等。

返回最大和,如果不存在满足题意的数字对,返回 -1 。

示例 1:

输入:nums = [51,71,17,24,42]
输出:88
解释:
i = 1 和 j = 2 ,nums[i] 和 nums[j] 数位上最大的数字相等,且这一对的总和 71 + 17 = 88 。
i = 3 和 j = 4 ,nums[i] 和 nums[j] 数位上最大的数字相等,且这一对的总和 24 + 42 = 66 。
可以证明不存在其他数对满足数位上最大的数字相等,所以答案是 88 。
示例 2:

输入:nums = [1,2,3,4]
输出:-1
解释:不存在数对满足数位上最大的数字相等。

提示:

2 <= nums.length <= 100
1 <= nums[i] <= 10^4

java代码:

class Solution {
    public int maxSum(int[] nums) {
        int max = -1;
        
        // Arrays.sort(nums);
        int n = nums.length;
        
        for(int i=n-1;i>0;i--) {
            for(int j=i-1;j>=0;j--) {
                if(maxDigitEqual(nums[i], nums[j])) {
                    max = Math.max(nums[i]+nums[j], max);
                    
                }
            }
        }
        
        return max;

    }
    
    public boolean maxDigitEqual(int i, int j) {
        int maxi = 0;
        int maxj = 0;
        while(i!=0) {
            int temp = i%10;
            maxi = Math.max(maxi, temp);
            i/=10;
        }
        while(j!=0) {
            int temp = j%10;
            maxj = Math.max(maxj, temp);
            j/=10;
        }
        
        return maxi==maxj;
    }
    
}


标签:最大数,nums,int,max,maxj,算法,maxi,6939,数位
From: https://blog.51cto.com/u_6813689/7871439

相关文章

  • 【算法题】88. 合并两个有序数组
    题目:给你两个按非递减顺序排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到nums1中,使合并后的数组同样按非递减顺序排列。注意:最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的......
  • RaftPaper:寻一个可被理解的共识算法
    周末躺不平,摆不烂,卷不动,随便读一篇paper吧原文:InSearchofanUnderstandableConsensusAlgorithm作者:DiegoOngaro/JohnOusterhout——StanfordUniversity摘要Raft是一个用于管理一份被复制的日志的共识算法,它和(multi-)Paxos产出的结果等价,和Paxos一样高效,但它的结......
  • 代码随想录算法训练营-动态规划-3-(0-1背包问题)|416. 分割等和子集、1049. 最后一块石
    416.分割等和子集01背包的递推公式为:dp[j]=max(dp[j],dp[j-weight[i]]+value[i]);如果dp[j]==j说明,集合中的子集总和正好可以凑成总和j,理解这一点很重要。1classSolution:2defcanPartition(self,nums:List[int])->bool:3_sum=......
  • 10.15算法
    最小栈设计一个支持push,pop,top操作,并能在常数时间内检索到最小元素的栈。实现MinStack类:MinStack()初始化堆栈对象。voidpush(intval)将元素val推入堆栈。voidpop()删除堆栈顶部的元素。inttop()获取堆栈顶部的元素。intgetMin()获取堆栈中的最小元素。 示例......
  • 一个vuepress配置问题,引发的js递归算法思考
    前言这两天在尝试用语雀+vuepress+github搭建个人博客。小破站地址:王天的web进阶之路语雀作为编辑器,发布文档推送github,再自动打包部署,大概流程如下。问题我使用的elog插件批量导出语雀文档。elog采用的配置是所有文章平铺导出,没有按照语雀知识库目录生成markdown,这导......
  • 一.排序算法---并归排序
    一.并归排序(自定义实现)merge函数:这个函数用于将两个已排序的子数组合并为一个更大的已排序数组。它包括创建临时数组L和R来存储左半部分和右半部分的元素,然后比较这些元素并将它们按升序合并到原始数组arr中。mergeSort函数:这个函数是归并排序的主要函数。它采用递......
  • 算法题解——买卖股票的最佳时机
    解题思路先考虑最简单的「暴力遍历」,即枚举出所有情况,并从中选择最大利润。设数组prices的长度为n,由于只能先买入后卖出,因此第1天买可在未来n−1天卖出,第2天买可在未来n-2天卖出……以此类推,共有\[(n-1)+(n-2)+\cdots+0=\frac{n(n-1)}{2}\]种情况,时间复......
  • 智慧矿山&矿山安全生产:矿山AI算法皮带坐人检测-助力安全生产,保护工人生命
    矿山AI算法皮带坐人检测技术是基于人工智能技术的一项创新应用。它通过在皮带输送设备上安装智能摄像头,利用AI算法进行实时监测和分析,确保皮带上没有工人坐卧,从而避免发生意外伤害。该技术不仅能够准确检测到工人的坐卧姿势,还可以检测到工人的距离和身体姿态,为工作人员提供及时的安......
  • 算法0506 对数器 二分搜索
    对数器非常重要的自我验证代码正确性的方法在面试时或机试时写算法题,没有测试用例或者测试用例太少,导致巨大的数据量无法进行测试时。需要自己写测试用例数据时可以使用对数器。......
  • 算法讲解0304
    1、打印二进制voidprint(intnum){ for(inti=31;i>=0;i--) if((num&(1<<i))==0) cin>>0; else cin>>1;}2、选择排序voidselectionSort(intarry[]){ intn=sizeof(arry)/sizeof(*a); if(n<2)return; for(inti=0......