返回

LeetCode 题解 - 1748. 唯一元素的和:巧用哈希表,尽收囊中!

前端

引言

欢迎来到 LeetCode 1748. 唯一元素的和的题解!在今天的文章中,我们将共同踏上攻克这道难题的征程。我们将深入剖析题意,探索巧妙的解题思路,并最终揭晓最优的解决方案。同时,我们还会分享优化后的代码,助力你在 LeetCode 的征途上更进一步。那么,准备好与我们一起踏上这段编程之旅了吗?

题意解析

  1. 唯一元素的和题目如下:

给你一个整数数组 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 的挑战。让我们继续保持对编程的热情,不断探索和学习,在编程的世界中大放异彩!