LeetCode 练习-简单-1512. 好数对的数目
2020-07-19 10:26
162 查看
LeetCode 1512. 好数对的数目
给你一个整数数组 nums 。
如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。
返回好数对的数目。
示例 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 <= 100 1 <= nums[i] <= 100
思路1:暴力
用双指针,将后方指针固定,前方指针前移,双循环遍历数组
复杂度:O(n^2)
func numIdenticalPairs(nums []int) int { i:=0 j:=len(nums)-1 sum:=0 for j>0 { if nums[i]==nums[j] { sum++ } if i==j-1 { i=0 j-- continue } i++ } return sum }
思路2:字典计数
使用Map进行对出现的数字进行记录计数,每一次出现相同数字都会与前面的数字形成对相应相等关系记录前文相等数的数量即可。 例:1,2,3,1,1,3 当map记录到下标为4时,nums[4]的1会与nums[0]和nums[3]都相对应,直接相加前面两个1出现的数量既可以完成相等组队(0,4)(3,4)-下标,两对。
复杂度O(n)
func numIdenticalPairs(nums []int) int { tmp := make(map[int]int) var total int for _,num := range nums { total += tmp[num] tmp[num]++ } return total }
相关文章推荐
- Leetcode |1512 好数对的数目
- LeetCode练习-简单 -70. 爬楼梯(动态规划)
- LeetCode 练习-简单-167. 两数之和 II - 输入有序数组
- LeetCode练习-简单卷
- LeetCode练习-简单 -1413. 逐步求和得到正数的最小值
- LeetCode练习-简单 -860. 柠檬水找零
- leetcode简单练习,回文串的7种写法。C#
- LeetCode练习-简单 -152. 乘积最大子数组(动态规划)
- LeetCode练习-简单卷
- 【Python】【难度:简单】Leetcode 1399. 统计最大组的数目
- LeetCode编程练习 - Valid Palindrome学习心得
- leetcode 238. Product of Array Except Self 一个动态规划DP的简单应用
- leetCode练习(14)
- 【练习01】 简单题(1)1012
- 1. Two Sum[LeetCode 简单 by 大志]
- js的作用域问题及简单练习
- LeetCode 实践练习51-55
- [置顶] LintCode 与 LeetCode 练习
- LeetCode Online Judge 题目C# 练习 - Binary Tree Inorder Traversal
- leetcode -- Kth Smallest Element in a BST -- 简单重点