当前位置: 首页 > news >正文

Leetcode 【2342. 数位和相等数对的最大和】

给你一个下标从 0 开始的数组 nums ,数组中的元素都是  整数。请你选出两个下标 i 和 ji != 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}

方法:哈希表

看到这么恐怖的数量级,第一想法肯定是暴力行不通,那么就来试试哈希表

首先将数组nums中每个元素的数位和保存在一个新数组中:

for i in nums:str_i = str(i)res = 0for digit in str_i:res += int(digit)sum_num.append(res)

这段代码的时间复杂度是O(n)

然后创建字典,key值为当前数位和,当字典中不存在该key值时,dic[key]为nums中的当前元素值,如果字典中存在key值,那么将新的nums元素值append到字典中:

for i in range(n):key = sum_num[i]if key not in dic:dic[key] = [nums[i]]else:dic[key].append(nums[i])

最后遍历字典,找出key值对应的value有两个及以上,并且按照降序排列,找出最大和即可:

for key, numbers in dic.items():if len(numbers) >= 2:numbers.sort(reverse=True)pair_sum = numbers[0] + numbers[1]ans = max(ans, pair_sum)

完整代码:

class Solution:def maximumSum(self, nums: List[int]) -> int:sum_num = []dic={}n=len(nums)ans=-1for i in nums:str_i = str(i)res = 0for digit in str_i:res += int(digit)sum_num.append(res)for i in range(n):key = sum_num[i]if key not in dic:dic[key] = [nums[i]]else:dic[key].append(nums[i])for key, numbers in dic.items():if len(numbers) >= 2:numbers.sort(reverse=True)pair_sum = numbers[0] + numbers[1]ans = max(ans, pair_sum)return ans

最后,看了灵佬的题解再次震撼我心,附上灵佬题解链接:

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

相关文章:

  • 【Spring】AOP进阶-JoinPoint和ProceedingJoinPoint详解
  • 实力进阶,教你使用thinkphp6开发一款商城系统
  • 电力感知边缘计算网关产品设计方案-网关软件架构
  • 金融业务系统: Service Mesh用于安全微服务集成
  • 好用的开源项目地址
  • ImportError: DLL load failed while importing _iterative: %1 不是有效的 Win32 应用程序。
  • 业务架构、技术架构、项目管理的有机结合
  • 【图像处理】:Otsu算法最大类间方差法(大津算法:附源码)
  • cp: can‘t stat ‘/usr/share/zoneinfo/Asia/Shanghai‘: No such file or directory
  • PyTorch 实战之水果分类
  • 嵌入式系统中相关的高质量开源项目
  • 单片机FLASH下载算法的制作
  • 数学才是顶级码农的核心修养,码农怎样搞好数学?来看看这些网友强推的数学神作!文末评论区进行评论参与送书哟
  • AWS实战(一)-创建S3 存储桶
  • pythom导出mysql指定binlog文件
  • 《剑指offer》分解让复杂问题更简单
  • es6要点
  • Github访问慢解决办法
  • IDEA 插件开发入门教程
  • Javascript弹出层-初探
  • Java编程基础24——递归练习
  • JSONP原理
  • js递归,无限分级树形折叠菜单
  • LeetCode算法系列_0891_子序列宽度之和
  • node.js
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • ViewService——一种保证客户端与服务端同步的方法
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 聊聊flink的TableFactory
  • 学习Vue.js的五个小例子
  • #LLM入门|Prompt#3.3_存储_Memory
  • #stm32驱动外设模块总结w5500模块
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (二十四)Flask之flask-session组件
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (算法)Travel Information Center
  • (学习日记)2024.02.29:UCOSIII第二节
  • (一)基于IDEA的JAVA基础1
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)jdk与jre的区别
  • (转)Scala的“=”符号简介
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .bat批处理(一):@echo off
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET命令行(CLI)常用命令
  • .NET业务框架的构建
  • ;号自动换行
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [ 蓝桥杯Web真题 ]-布局切换
  • [04]Web前端进阶—JS伪数组
  • [ActionScript][AS3]小小笔记
  • [ai笔记4] 将AI工具场景化,应用于生活和工作
  • [AR Foundation] 人脸检测的流程
  • [Excel]如何找到非固定空白格數列的條件數據? 以月份報價表單為例