每周挑战赛由 Mohammad S. Anwar 组织,是一场友好的竞赛,开发者通过解决两个任务进行竞争。它鼓励所有语言和级别的开发者通过学习、分享和娱乐来参与。
每周挑战 300 中的任务 2:嵌套数组提示开发人员找到最长的嵌套数组长度。
每周挑战 300 截止日期为 2024 年 12 月 23 日星期日 23:59(英国时间)。为了避免偏见,请考虑在比赛后阅读这篇文章。
给定一个整数数组,@ints 长度为 n,包含 [0, n-1] 范围内的数字排列。
编写一个脚本来构建一个集合,set[i] = ints[i], ints[ints[i]], ints[ints[ints[i]]], ... 遵循以下规则:
- set[i] 中的第一个元素以元素 ints[i] 的选择开始。
- set[i] 中的下一个元素应该是 ints[ints[i]],然后是 ints[ints[ints[i]]],依此类推。
- 我们在 set[i] 中出现重复元素之前停止添加。
返回集合set[i]的最长长度。
每周挑战 300,任务 2:嵌套数组
示例 1 和示例 2 给出了给定输入的预期输出。
Input: @ints = (5, 4, 0, 3, 1, 6, 2) Output: 4
这里设置了一个最长的集合[0]:
set[0] = {ints[0], ints[5], ints[6], ints[2]} = {5, 6, 2, 0}
Input: @ints = (0, 1, 2) Output: 1
def build_set_from_index(ints, starting_index): iset = [ ints[starting_index], ] for ints_index in range(1, len(ints)): pindex = iset[ints_index - 1] value = ints[pindex] if value in iset: break iset.append(value) return iset def return_longest_length(ints): max_length = 0 for i in range(0, len(ints)): iset = build_set_from_index(ints, i) iset_length = len(iset) if iset_length > max_length: max_length = iset_length return max_length
我的解决方案使用两个函数 build_set_from_index 和 return_longest_length。
build_set_from_index 返回根据参数ints 和starting_index 构造的set[starting_index]。我使用迭代方法来构造 set[]。
我的方法是从一个清晨开始的,以及随后对 set[] 构造规则的释义。最初,这些规则似乎很复杂。但是,在享用了一顿丰盛的早餐和咖啡因后重新查看示例 1 后,我更好地理解了这些规则。我还能够制定以下解释。
使用释义方法,从 @ints 交互构造 set[0],如示例 1 所示,变得更加简单!
return_longest_length 查找所有由 int 构造的 set[] 的最大长度。它利用 build_set_from_index 为每个 0
在这篇文章中,我讨论了任务 1:嵌套数组,并提出了我的解决方案。我的解决方案很简单,很大程度上是根据我如何解释原始任务得出的,并强调了一顿丰盛早餐的重要性。
以上是我的 Python 语言解决方案来自《每周挑战》中的任务嵌套数组的详细内容。更多信息请关注PHP中文网其他相关文章!