返回
LeetCode 题解 - 1748. 唯一元素的和:巧用哈希表,尽收囊中!
前端
2024-01-04 04:16:12
引言
欢迎来到 LeetCode 1748. 唯一元素的和的题解!在今天的文章中,我们将共同踏上攻克这道难题的征程。我们将深入剖析题意,探索巧妙的解题思路,并最终揭晓最优的解决方案。同时,我们还会分享优化后的代码,助力你在 LeetCode 的征途上更进一步。那么,准备好与我们一起踏上这段编程之旅了吗?
题意解析
- 唯一元素的和题目如下:
给你一个整数数组 nums
,请你返回 nums
中唯一元素的和。
- 示例 1:
输入:nums = [1,2,3,2]
输出:4
解释:唯一元素为 [1,3],和为 4。
- 示例 2:
输入:nums = [1,1,1,1,1]
输出:0
解释:没有唯一元素,和为 0。
- 示例 3:
输入:nums = [1,2,3,4,5]
输出:15
解释:唯一元素为 [1,2,3,4,5],和为 15。
解题思路
这道题目的关键在于找出数组中的唯一元素并对它们求和。由于唯一元素不重复出现,我们可以使用哈希表来快速查找和存储它们。哈希表是一种数据结构,可以根据键值快速查找和访问数据。
具体来说,我们可以使用哈希表来记录每个元素出现的次数。然后,我们可以遍历哈希表,并对那些出现次数为 1 的元素求和。这种方法的时间复杂度为 O(n),其中 n 是数组的长度。
优化后的代码
以下是优化后的代码:
def sumOfUnique(nums):
"""
:type nums: List[int]
:rtype: int
"""
# 创建哈希表
hashtable = {}
# 将数组中的元素添加到哈希表中
for num in nums:
if num in hashtable:
hashtable[num] += 1
else:
hashtable[num] = 1
# 计算唯一元素的和
sum = 0
for num, count in hashtable.items():
if count == 1:
sum += num
return sum
# 测试代码
nums1 = [1,2,3,2]
nums2 = [1,1,1,1,1]
nums3 = [1,2,3,4,5]
print(sumOfUnique(nums1)) # 输出:4
print(sumOfUnique(nums2)) # 输出:0
print(sumOfUnique(nums3)) # 输出:15
复杂度分析
- 时间复杂度:O(n),其中 n 是数组的长度。哈希表的操作时间复杂度为 O(1),因此我们可以在 O(n) 的时间内完成哈希表的构建和唯一元素的求和。
- 空间复杂度:O(n),其中 n 是数组的长度。哈希表需要存储每个元素及其出现的次数,因此空间复杂度为 O(n)。
结语
通过对 LeetCode 1748. 唯一元素的和的深入解析,我们掌握了巧妙的解题思路,并实现了优化后的代码。希望这篇题解能够为你带来启发,助你轻松征服 LeetCode 的挑战。让我们继续保持对编程的热情,不断探索和学习,在编程的世界中大放异彩!