统计list里面相同元素个数_Array篇easy难度之求相同元素个数
题目描述
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难度之求相同元素个数相关推荐
- selenium 页面经常改变元素_selenium 总结篇,常见方法和页面元素的操作
今天,总结一下selenium怎么操作web页面常见的元素. 主要有: 上传 alter dialog prompt dialog confirm dialog select list radio b ...
- 1.统计所输入字符串中单词的个数。2.删除一个list里面重复元素。3.将列表中的偶数变成它的平方,奇数保持不变。4.输入字符串,将其每个字符的ASCII码形成列表并输出.5.猜单词游戏
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: 1.统计所输入字符串中单词的个数,单词之间用空格分隔. 代码: print("请输入字符(以空格隔开):" ...
- Redis 笔记(06)— set 类型(向集合添加元素、获取集合元素个数、判断集合中是否包含某个元素、删除给定元素、返回集合中所有元素、计算集合的交集、并集、差集)
Redis 的 set 集合内部的键值对是无序的唯一的.它的内部实现相当于一个特殊的字典,字典中所有的 value 都是一个值 NULL .当集合中最后一个元素移除之后,数据结构自动删除,内存被回收. ...
- 174. 地下城游戏;剑指 Offer 40. 最小的k个数;378. 有序矩阵中第K小的元素;703. 数据流中的第K大元素
一些恶魔抓住了公主(P)并将她关在了地下城的右下角.地下城是由 M x N 个房间组成的二维网格.我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主. 骑士的初始 ...
- 统计给定的n个数中,负数、零和正数的个数
#include <stdio.h> /* 统计给定的n个数中,负数.零和正数的个数. 输入的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个整 ...
- 统计给定的n个数中,负数,零和正数的个数。
输入数据有多组,每组占一行,每行的第一个数是整数n(n <100),表示需要统计的数值的个数,然后是n个实数:如果n = 0,则表示输入结束,该行不做处理.对于每组输入数据,输出一行a,b和c, ...
- 用c语言统计给定的n个数中,负数、零和正数的个数。
#include<stdio.h> #include<math.h> int main() {/*统计给定的n个数中,负数.零和正数的个数.输入输入的第一个数是整数n(n< ...
- 数值统计(多实例测试),统计给定的n个数中,负数、零和正数的个数
题目描述 统计给定的n个数中,负数.零和正数的个数 输入 输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数:如果n=0,则表示输入结束, ...
- 统计给定的n个数中,负数、零和正数的个数。
统计给定的n个数中,负数.零和正数的个数.输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数:如果n=0,则表示输入结束,该行不做处理.对 ...
最新文章
- JSP动作和内置对象
- IBM将利用Watson进行报税 以彰显人工智能优势
- SAP CDS view生成的OData服务对CRUD(增删改查)的支持
- 大数据胸_喂母乳会导致胸下垂?!你被这个谣言骗了多少年?
- 先装vs还是先装sql_锅炉给水泵的止回阀到底安装在出口阀前还是阀后?
- stm32 USART
- 【Hadoop Summit Tokyo 2016】一小时之内使用Apache Nifi从零到数据流
- ubuntu 16.04安装网易云音乐
- java设计模式--简单工厂模式
- Atitit 并发技术的选项 attilax总结 艾龙 著 1. 三大并发模型	1 2. 从可读性考虑 优先使用 并行工作者 多线程模式,不要使用异步流水线模式	2 2.1. 多线程模式方便全局
- imx6 android 最新,【iMX6Q-Android6.0】---移植 iMX6Q android6.0 源码 史上最详细
- 腾讯Bugly的使用
- 生成树协议STP(Spanning Tree Protocol)
- 百度前端技术体系——百度EFE(Excellent FrontEnd)技术体系
- Dev C++ 下载地址和安装教程
- 乐视电商云的整体架构与技术实现
- 《计算机组成原理》——计算题
- java毕业设计阿博图书馆管理系统mybatis+源码+调试部署+系统+数据库+lw
- Python Tkinter实现的WIN7电脑端共享WIFI热点(二)
- python 通信系统仿真_深入浅出通信原理连载22-40(Python代码版)
热门文章
- 《工程师文化行为自我分享》_文化对于鼓励创新行为至关重要
- (21)npm scripts 实现自动化构建的最简方式
- html5 canvas气泡动画
- 推荐一个Python的开源小工具大合集!
- 黑盒测试 白盒测试 题 1
- Bootstrap3 滚动监听插件的事件
- 虚拟机运行Gazebo出现VMware: vmw_ioctl_command error
- 计算机桌面保护怎么办,电脑屏幕保护怎么设置
- oracle监听服务丢失,Oracle监听服务无法启动或丢失的解决办法
- java channelpipeline,Netty那点事(三)Channel与Pipeline