1. 外观数列
给定一个正整数 n
,输出外观数列的第 n
项。
「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。
你可以将其视作是由递归公式定义的数字字符串序列:
countAndSay(1) = "1"
countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。
前五项如下:
1. 1
2. 11
3. 21
4. 1211
5. 111221
第一项是数字 1
描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 "11"
描述前一项,这个数是 11 即 “ 二 个 1 ” ,记作 "21"
描述前一项,这个数是 21 即 “ 一 个 2 + 一 个 1 ” ,记作 "1211"
描述前一项,这个数是 1211 即 “ 一 个 1 + 一 个 2 + 二 个 1 ” ,记作 "111221"
要 描述 一个数字字符串,首先要将字符串分割为 最小 数量的组,每个组都由连续的最多 相同字符 组成。然后对于每个组,先描述字符的数量,然后描述字符,形成一个描述组。要将描述转换为数字字符串,先将每组中的字符数量用数字替换,再将所有描述组连接起来。
例如,数字字符串 "3322251" 的描述如下图:
示例 1:
输入:n = 1
输出:"1"
解释:这是一个基本样例。
示例 2:
输入:n = 4
输出:"1211"
解释:
countAndSay(1) = "1"
countAndSay(2) = 读 "1" = 一 个 1 = "11"
countAndSay(3) = 读 "11" = 二 个 1 = "21"
countAndSay(4) = 读 "21" = 一 个 2 + 一 个 1 = "12" + "11" = "1211"
提示:
1 <= n <= 30
出处:
https://edu.csdn.net/practice/26974818
代码:
class Solution: def countAndSay(self, n): if n == 1: return '1' x = '1' while n > 1: x = self.count(x) n -= 1 return x def count(self, x): m = list(x) res = [] m.append(None) i , j = 0 , 0 while i < len(m) - 1: j += 1 if m[j] != m[i]: res += [j - i, m[i]] i = j return ''.join(str(s) for s in res) # %% s = Solution() print(s.countAndSay(n = 1)) print(s.countAndSay(n = 4))
输出:
1
1211
2. 找出素数对
任意输入一个大于10的偶数,编程找出所有和等于该偶数的素数对
以下程序实现了这一功能,请你填补空白处内容:
出处:
https://edu.csdn.net/practice/26974819
代码:
def is_prime(num): """ 判断一个数是否为素数 """ if num < 2: # 小于2的数都不是素数 return False for i in range(2, int(num/2)+1): # 遍历2到n/2,判断num是否能被整除 if num % i == 0: return False return True def find_prime_pair(n): """ 找出和为n的素数对 """ result = [] for i in range(2, int(n/2)+1): # 遍历2到n/2 if is_prime(i) and is_prime(n-i): # 如果i和n-i都是素数,就保存到结果中 result.append((i, n-i)) return result n = int(input("请输入一个大于10的偶数:")) while n <= 10 or n % 2 != 0: # 如果不符合条件就重新输入 n = int(input("输入错误,请重新输入一个大于10的偶数:")) result = find_prime_pair(n) print("所有和为",n,"的素数对为:") for pair in result: print("%d=%d+%d"%(n,*pair))
输入输出:
请输入一个大于10的偶数:20
所有和为 20 的素数对为:
20=3+17
20=7+13
3. 子集
给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
示例 1:
输入:nums = [1,2,3]
输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
示例 2:
输入:nums = [0]
输出:[[],[0]]
提示:
1 <= nums.length <= 10
-10 <= nums[i] <= 10
nums 中的所有元素 互不相同
出处:
https://edu.csdn.net/practice/26974820
代码:
python
输出: