泰安网站开发哪家便宜,天津最新消息今天,自建网站软件,下载手机最新版app题目 给你一个下标从 0 开始的数组 nums #xff0c;数组中的元素都是 正 整数。请你选出两个下标 i 和 j#xff08;i ! j#xff09;#xff0c;且 nums[i] 的数位和 与 nums[j] 的数位和相等。 请你找出所有满足条件的下标 i 和 j #xff0c;找出并返回 nums[i] num…题目 给你一个下标从 0 开始的数组 nums 数组中的元素都是 正 整数。请你选出两个下标 i 和 ji ! j且 nums[i] 的数位和 与 nums[j] 的数位和相等。 请你找出所有满足条件的下标 i 和 j 找出并返回 nums[i] nums[j] 可以得到的 最大值 。 解题思路
计算元素数位和将相同数位和的元素通过List进行记录对List进行排序取最大的两个值记录返回最大值。
代码展示
public class Two {public static void main(String[] args) {Two two new Two();System.out.println(two.maximumSum(new int[]{18,43,36,13,7}));System.out.println(two.maximumSum(new int[]{10,12,19,14}));}public int maximumSum(int[] nums) {MapInteger, ListInteger data new HashMap();for (int i 0; i nums.length; i){int num numSum(nums[i]);ListInteger temp data.getOrDefault(num, new ArrayList());temp.add(nums[i]);data.put(num, temp);}int maxSum -1;for (ListInteger list : data.values()){int size list.size();if(size 2){continue;}Collections.sort(list);maxSum Math.max(maxSum, list.get(size - 1) list.get(size - 2));}return maxSum;}public int numSum(int num){int sum 0;while (num 0){sum num % 10;num num / 10;}return sum;}
}