题目描述

https://leetcode.com/problems/number-of-good-pairs/

Given an array of integers nums.A pair (i,j) is called good if nums[i] == nums[j] and i < j.Return the number of good pairs.Example 1:Input: nums = [1,2,3,1,1,3]
Output: 4
Explanation: There are 4 good pairs (0,3), (0,4), (3,4), (2,5) 0-indexed.
Example 2:Input: nums = [1,1,1,1]
Output: 6
Explanation: Each pair in the array are good.
Example 3:Input: nums = [1,2,3]
Output: 0Constraints:1 <= nums.length <= 100
1 <= nums[i] <= 100

博主第一次提交的代码

博主脑子也不太灵活,直观的思考就是使用排列组合的方式,假如数字7有n个重复的,那么n从中取出任意2个无序的组合可能的种类就是

代码写出来了,但是提交后值算错了,原来是在factorial函数中,result*=i这一步整形溢出了

class Solution {public int numIdenticalPairs(int[] nums) {Map<Integer,Integer> cache = new HashMap<>();for(int eachInt: nums){if(cache.get(eachInt) == null){int count = 1;cache.put(eachInt,count);}else{int count = cache.get(eachInt);cache.put(eachInt,++count);}}int result = 0;for(int eachValue:cache.values()){if( eachValue > 1){result += factorial(eachValue)/(2* factorial(eachValue-2));}}return result;}public int factorial(int n){if( n == 0){return 1;}int result = 1;for(int i=1; i<=n; i++){result*=i;}return result;}
}

修复一下整形溢出的问题,把阶乘公式改成long类型,修复完之后依然溢出,那么就得看看别人优秀的解法了

public static long factorial(int n){if( n == 0){return 1;}long result = 1;for(int i=1; i<=n; i++){result*=i;}return result;}

他人优秀的代码

解法一

这个解法也是基于排列组合公式的一个等价公式,并且这段代码避免了重复的乘法,也就不会产生一个值特别大的数字,不会产生整形溢出的问题

public int numIdenticalPairs(int[] A) {int res = 0, count[] = new int[101];for (int a: A) {res += count[a]++;}return res;}

统计list里面相同元素个数_Array篇easy难度之求相同元素个数相关推荐

  1. selenium 页面经常改变元素_selenium 总结篇,常见方法和页面元素的操作

    今天,总结一下selenium怎么操作web页面常见的元素. 主要有: 上传 alter dialog prompt dialog confirm dialog select list radio b ...

  2. 1.统计所输入字符串中单词的个数。2.删除一个list里面重复元素。3.将列表中的偶数变成它的平方,奇数保持不变。4.输入字符串,将其每个字符的ASCII码形成列表并输出.5.猜单词游戏

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: 1.统计所输入字符串中单词的个数,单词之间用空格分隔. 代码: print("请输入字符(以空格隔开):" ...

  3. Redis 笔记(06)— set 类型(向集合添加元素、获取集合元素个数、判断集合中是否包含某个元素、删除给定元素、返回集合中所有元素、计算集合的交集、并集、差集)

    Redis 的 set 集合内部的键值对是无序的唯一的.它的内部实现相当于一个特殊的字典,字典中所有的 value 都是一个值 NULL .当集合中最后一个元素移除之后,数据结构自动删除,内存被回收. ...

  4. 174. 地下城游戏;剑指 Offer 40. 最小的k个数;378. 有序矩阵中第K小的元素;703. 数据流中的第K大元素

    一些恶魔抓住了公主(P)并将她关在了地下城的右下角.地下城是由 M x N 个房间组成的二维网格.我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主. 骑士的初始 ...

  5. 统计给定的n个数中,负数、零和正数的个数

    #include <stdio.h> /*     统计给定的n个数中,负数.零和正数的个数.      输入的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个整 ...

  6. 统计给定的n个数中,负数,零和正数的个数。

    输入数据有多组,每组占一行,每行的第一个数是整数n(n <100),表示需要统计的数值的个数,然后是n个实数:如果n = 0,则表示输入结束,该行不做处理.对于每组输入数据,输出一行a,b和c, ...

  7. 用c语言统计给定的n个数中,负数、零和正数的个数。

    #include<stdio.h> #include<math.h> int main() {/*统计给定的n个数中,负数.零和正数的个数.输入输入的第一个数是整数n(n< ...

  8. 数值统计(多实例测试),统计给定的n个数中,负数、零和正数的个数

    题目描述 统计给定的n个数中,负数.零和正数的个数 输入 输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数:如果n=0,则表示输入结束, ...

  9. 统计给定的n个数中,负数、零和正数的个数。

    统计给定的n个数中,负数.零和正数的个数.输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数:如果n=0,则表示输入结束,该行不做处理.对 ...

最新文章

  1. JSP动作和内置对象
  2. IBM将利用Watson进行报税 以彰显人工智能优势
  3. SAP CDS view生成的OData服务对CRUD(增删改查)的支持
  4. 大数据胸_喂母乳会导致胸下垂?!你被这个谣言骗了多少年?
  5. 先装vs还是先装sql_锅炉给水泵的止回阀到底安装在出口阀前还是阀后?
  6. stm32 USART
  7. 【Hadoop Summit Tokyo 2016】一小时之内使用Apache Nifi从零到数据流
  8. ubuntu 16.04安装网易云音乐
  9. java设计模式--简单工厂模式
  10. Atitit 并发技术的选项 attilax总结 艾龙 著 1. 三大并发模型 1 2. 从可读性考虑 优先使用 并行工作者 多线程模式,不要使用异步流水线模式 2 2.1. 多线程模式方便全局
  11. imx6 android 最新,【iMX6Q-Android6.0】---移植 iMX6Q android6.0 源码 史上最详细
  12. 腾讯Bugly的使用
  13. 生成树协议STP(Spanning Tree Protocol)
  14. 百度前端技术体系——百度EFE(Excellent FrontEnd)技术体系
  15. Dev C++ 下载地址和安装教程
  16. 乐视电商云的整体架构与技术实现
  17. 《计算机组成原理》——计算题
  18. java毕业设计阿博图书馆管理系统mybatis+源码+调试部署+系统+数据库+lw
  19. Python Tkinter实现的WIN7电脑端共享WIFI热点(二)
  20. python 通信系统仿真_深入浅出通信原理连载22-40(Python代码版)

热门文章

  1. 《工程师文化行为自我分享》_文化对于鼓励创新行为至关重要
  2. (21)npm scripts 实现自动化构建的最简方式
  3. html5 canvas气泡动画
  4. 推荐一个Python的开源小工具大合集!
  5. 黑盒测试 白盒测试 题 1
  6. Bootstrap3 滚动监听插件的事件
  7. 虚拟机运行Gazebo出现VMware: vmw_ioctl_command error
  8. 计算机桌面保护怎么办,电脑屏幕保护怎么设置
  9. oracle监听服务丢失,Oracle监听服务无法启动或丢失的解决办法
  10. java channelpipeline,Netty那点事(三)Channel与Pipeline