携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情
题目描述
给你一个整数数组 nums 。
如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。
返回好数对的数目。
来源:力扣(LeetCode)
- 示例 1
输入:nums = [1,2,3,1,1,3]
输出:4
解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始
- 示例 2
输入: nums = [1,1,1,1]
输出: 6
解释: 数组中的每组数字都是好数对
- 示例 3
输入: nums = [1,2,3]
输出: 0
提示:
1 <= nums.length <= 1001 <= nums[i] <= 100
思路分析
这道题也是很简单的一道题目;题目会给出一个整数数组nums,在这个数组nums里面找出所有的“好数对”,并计算出“好对数”的数量,那么,什么是“好对数”呢?如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。简单的来说,就是找出数组中和当前元素相等的其他元素,并且i < j(这里的解释就是:不能重复对比,因为前面的元素已经和当前的元素对比过了,不能再和前面的元素对比了,所以必须要i < j)。
对于数组我们想到的是循环,但是这里的每个元素都要和其他元素进行一次比对,所有,这里需要有两个循环,并且每两个元素比对只能有一次,所以内循环不能从0开始,而是要从外循环开始的下标加一开始;
声明一个num变量来存储“好数对”的数量,在内循环中比对arr[i]和arr[j],若是两个元素相等,num就加一,直至循环结束,num的数量就是数组中“好数对”的总数量。
AC代码
function solution(arr) {
let num = 0;
let leng = arr.length;
for(let i=0; i<leng; i++) {
for(let j=i+1; j<leng; j++) {
if(arr[i] === arr[j]) {
num++
}
}
}
}
let arr = [1,2,3,1,1,3];
solution(arr)