返回

LeetCode第240场周赛题解

闲谈

5750. 人口最多的年份

题目

给定一个年份列表 ages,每个年份代表着该年份的人口数量。请找出人口最多的年份。

示例:

输入:ages = [1990, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021]
输出:2000

思路:

我们可以使用一个哈希表来存储年份和对应的人口数量。然后,我们可以遍历哈希表,找出人口最多的年份。

代码实现:

def maximum_population_year(ages):
  """
  :type ages: List[int]
  :rtype: int
  """
  # 使用哈希表存储年份和对应的人口数量
  population = {}
  for age in ages:
    if age not in population:
      population[age] = 0
    population[age] += 1

  # 找出人口最多的年份
  max_population = 0
  max_year = 0
  for year, population in population.items():
    if population > max_population:
      max_population = population
      max_year = year

  return max_year


# 测试代码
ages = [1990, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021]
result = maximum_population_year(ages)
print(result)

5751. 一对值的 最大距离

题目:

给你一个整数数组 nums,其中每个元素都互不相同。请你返回 nums 中任意一对不同的元素之间的 最大距离 。

示例:

输入:nums = [1,2,3]
输出:2

思路:

我们可以使用一个哈希表来存储每个元素的位置。然后,我们可以遍历哈希表,找出最大距离。

代码实现:

def max_distance(nums):
  """
  :type nums: List[int]
  :rtype: int
  """
  # 使用哈希表存储每个元素的位置
  positions = {}
  for i, num in enumerate(nums):
    positions[num] = i

  # 找出最大距离
  max_distance = 0
  for i, num in enumerate(nums):
    for j in range(i + 1, len(nums)):
      max_distance = max(max_distance, abs(positions[num] - positions[nums[j]]))

  return max_distance


# 测试代码
nums = [1, 2, 3]
result = max_distance(nums)
print(result)