day1-Datawhale-数据结构与算法
程序员文章站
2022-07-14 23:08:13
...
1.利用动态数组解决数据存放问题
编写一段代码,要求输入一个整数N,用动态数组A来存放2~N之间所有5或7的倍数,输出该数组。
示例:
输入:
N = 100
输出:
5 7 10 14 15 20 21 25 28 30 35 40 42 45 49 50 55 56 60 63 65 70 75 77 80 84 85 90 91 95 98 100
代码:
N=int(input("N="))
A=[]
for i in range(2, N+1):
if i%5==0 or i%7==0:
A.append(i)
print(A)
2.托普利茨矩阵问题
如果一个矩阵的每一方向由左上到右下的对角线上具有相同元素,那么这个矩阵是托普利茨矩阵。
给定一个M x N的矩阵,当且仅当它是托普利茨矩阵时返回True。
输入:
matrix = [
[1,2,3,4],
[5,1,2,3],
[9,5,1,2]
]
输出: True
代码:
matrix = [ [1,2,3,4], [5,1,2,3], [9,5,1,2] ]
def aim(matrix):
for r in range(len(matrix)-1):
for c in range(len(matrix[0])-1):
if matrix[r+1][c+1] and matrix[r][c] != matrix[r+1][c+1]:
return False
return True
aim(matrix)
3.三数之和
给定一个包含 n 个整数的数组nums,判断nums中是否存在三个元素a,b,c,使得a + b + c = 0?找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
示例:
给定数组 nums = [-1, 0, 1, 2, -1, -4],
满足要求的三元组集合为:
[
[-1, 0, 1],
[-1, -1, 2]
]
代码:
nums = [-1, 0, 1, 2, -1, -4]
l=len(nums)
arr=[]
for i in range(l-2):
for j in range(i+1,l-1):
for k in range(j+1,l):
if(nums[i]+nums[j]+nums[k]==0):
tmp=sorted([nums[i],nums[j],nums[k]])
if tmp not in arr:
arr.append(tmp)
print("answer is:",arr)
上一篇: 零基础入门学习Python | 第003讲:插曲之变量和字符串
下一篇: 跟随目标物体移动的功能