目录
1. 外观数列 🌟🌟
2. 找出素数对 ※
3. 子集 🌟🌟
🌟 每日一练刷题专栏 🌟
Golang每日一练 专栏
Python每日一练 专栏
C/C++每日一练 专栏
Java每日一练 专栏
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
输出:
🌟 每日一练刷题专栏 🌟
✨ 持续,努力奋斗做强刷题搬运工!
👍 点赞,你的认可是我坚持的动力!
🌟 收藏,你的青睐是我努力的方向!
✎ 评论,你的意见是我进步的财富!
☸ 主页:https://hannyang.blog.csdn.net/
Golang每日一练 专栏 | |
Python每日一练 专栏 | |
C/C++每日一练 专栏 | |
Java每日一练 专栏 |