Python 数组欢乐跳判断:算法与代码实现
\u003cp\u003e\u003cstrong\u003e问题描述\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e一个 有n 个元素的整数数组,如果数组两个连续元素之间差的绝对值包括了 [1, n-1]之间的所有整数,则称之符合“欢乐的跳”,如数组[1,4,2,3]符合“欢乐的跳”,因为差的绝对值分别为:3,2,1。给定一个数组,你的任务是判断该数组是否符合“欢乐的跳”。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e输入格式\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e输入共2行。第一行以一个整数 (1≤1000)开始,第二行输入n个[-100000,100000]之间的整数,用空格隔开。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e输出格式\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e对于每组测试数据,输出一行若该数组符合“欢乐的跳”则输出 YES,否则输出NO。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e输入样例\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e4\u003c/p\u003e\n\u003cp\u003e1 4 2 3\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e输出样例\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eYES\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e解题思路\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e我们可以遍历整个数组,计算每两个连续元素之间的差的绝对值,并将其加入到一个集合中。最后,我们判断这个集合是否包含了 [1, n-1] 之间的所有整数。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ePython代码\u003c/strong\u003e\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003en = int(input())\narr = list(map(int, input().split()))\n\n# 定义一个集合,用来存储差的绝对值\ndiff_set = set()\n\nfor i in range(n-1):\n diff = abs(arr[i] - arr[i+1])\n diff_set.add(diff)\n\n# 判断集合中是否包含了 [1, n-1] 之间的所有整数\nif len(diff_set) == n-1 and min(diff_set) == 1 and max(diff_set) == n-1:\n print("YES")\nelse:\n print("NO")\n\u003c/code\u003e\u003c/pre\u003e
原文地址: https://www.cveoy.top/t/topic/pBkk 著作权归作者所有。请勿转载和采集!