首页 > 其他分享 >17th Jan 1814. 统计一个数组中好对子的数目(每日一题)

17th Jan 1814. 统计一个数组中好对子的数目(每日一题)

时间:2023-01-17 19:56:34浏览次数:43  
标签:1814 11 17th nums int nicePairs rev Jan 10

给你一个数组 nums ,数组中只包含非负整数。定义 rev(x) 的值为将整数 x 各个数字位反转得到的结果。比方说 rev(123) = 321rev(120) = 21 。我们称满足下面条件的下标对 (i, j)好的

  • 0 <= i < j < nums.length
  • nums[i] + rev(nums[j]) == nums[j] + rev(nums[i])

请你返回好下标对的数目。由于结果可能会很大,请将结果对 10^9 + 7 取余 后返回。

输入:nums = [42,11,1,97]
输出:2
解释:两个坐标对为:
 - (0,3):42 + rev(97) = 42 + 79 = 121, 97 + rev(42) = 97 + 24 = 121 。
 - (1,2):11 + rev(1) = 11 + 1 = 12, 1 + rev(11) = 1 + 11 = 12 。
  1. 运用了HashMap的特性
  2. 利用了加法交换律 将 nums[i] + rev(nums[j]) == nums[j] + rev(nums[i]) 交换为nums[i] - rev(nums[i]) == nums[j] - rev(nums[j]) 并且可以当做 f(x) = nuns[x] - rev(nums[x]) 进行处理 这样讲公式的两边下标统一 简化了算法
class Solution {
    public int countNicePairs(int[] nums) {
        final int MOD = (int)(Math.pow(10,9)) + 7;
      //累加结果得到最终的好下标对的数目
        int count = 0;
        HashMap<Integer, Integer> nicePairs = new HashMap<Integer,Integer>();
        int nums_len = nums.length;
      //翻转nums[i]
        for(int i = 0; i < nums_len; i++){
            int temp = nums[i];
            int j = 0;
            while(temp > 0){
                j = j * 10 + temp % 10;
                temp /= 10;
            }
            count = (count + nicePairs.getOrDefault(nums[i] - j, 0)) % MOD;
            nicePairs.put(nums[i] - j, nicePairs.getOrDefault(nums[i] - j, 0) + 1);
        }
        return count;
    }
}

标签:1814,11,17th,nums,int,nicePairs,rev,Jan,10
From: https://www.cnblogs.com/rickierun/p/17058598.html

相关文章

  • 17th Jan HJ5 进制转换
    写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。数据范围:保证结果在1\len\le2^{31}-1\1≤n≤231−1输入描述:输入一个十六进制的数值字符串。输出描述......
  • 17th Jan NC61 两数之和
    给出一个整型数组numbers和一个目标值target,请在数组中找出两个加起来等于目标值的数的下标,返回的下标按升序排列。(注:返回的数组下标从1开始算起,保证target一定可以由......
  • django4.1版本小demo
    1.安装anoconda,创建虚拟python3.9环境2.安装django,pipinstalldjango-i清华源安装较快3.新建一个django项目django-adminstartprojectdemo14.创建单个或者多......
  • 基于Django的全栈个人博客
    基础但完整的三个DjangoFullstackBlog项目这三个用的都是基础的Django全栈,没有做前后端分离。前两个有完整教程,第三个教程无,但有redis缓存,后续可以三个对照着相互补充。......
  • Django Session 原理及配置和使用
    1、Django如何使用session会话1.1)session会话是通过中间件实现的,所以首先需要配置MIDDLEWAREMIDDLEWARE=[......'django.contrib.sessions.middleware.SessionM......
  • Django自定义认证系统原理及源码分析解读
    疑问Django在​​如何自定义用户登录认证系统的时候​​,大家都会里面立马说自定义一个或者多个backend,比如通过账号+密码、邮箱+密码,邮箱+验证码、手机号+短信验证码等等......
  • 03-Django命令 python manage.py runserver
    使用Django开发,一定离不开这条命令,pythonmanage.pyrunserver[127.0.0.1:8000],这条命令是启动DJango,接下来就可以通过浏览器发起请求了。Django肯定也会遵守WSGI协议......
  • [LeetCode] 1814. Count Nice Pairs in an Array
    Youaregivenanarray nums thatconsistsofnon-negativeintegers.Letusdefine rev(x) asthereverseofthenon-negativeinteger x.Forexample, rev(1......
  • 16 Jan 1813. 句子相似性 III(每日一题)
    16Jan1813.句子相似性III(每日一题)一个句子是由一些单词与它们之间的单个空格组成,且句子的开头和结尾没有多余空格。比方说,"HelloWorld","HELLO","helloworldhello......
  • 【补档】15 Jan 2293. 极大极小游戏(每日一题)
    15Jan2293.极大极小游戏给你一个下标从0开始的整数数组nums,其长度是2的幂。对nums执行下述算法:设n等于nums的长度,如果n==1,终止算法过程。否则,创建......