DW数据结构与算法学习任务----Task01:数
Task01:数组(1天)
目录
Task01:数组(1天)
练习部分
1.利用动态数组解决数据存放问题
2.托普利茨矩阵问题
3.三数之和
实现动态数组,该数组能够根据需要修改数组的长度
练习部分
1.利用动态数组解决数据存放问题
编写一段代码,要求输入一个整数N,用动态数组A来存放2~N之间所有5或7的倍数,输出该数组。
array = []
N = eval(input(‘请输入一个整数:’))
for i in range(N):
if (i + 1) % 5 == 0 or (i + 1) % 7 == 0:
array.append(i + 1)
print(array)
2.托普利茨矩阵问题
如果一个矩阵的每一方向由左上到右下的对角线上具有相同元素,那么这个矩阵是托普利茨矩阵。
input
mat = []
n = 0
x = eval(input(‘请输入矩阵行数’))
for i in range(x):
mat.append([])
mat[i] = input().split(’ ')
judge
for i in range(x - 1):
for j in range(len(mat[1]) - 1):
if mat[i][j] != mat[i + 1][j + 1]:
n = 1
if n == 1:
print(‘mat不是托普利茨矩阵’)
if n == 0:
print(‘mat是托普利茨矩阵’)
给定一个M x N的矩阵,当且仅当它是托普利茨矩阵时返回True。
3.三数之和
给定一个包含 n 个整数的数组nums,判断nums中是否存在三个元素a,b,c,使得a + b + c = 0?找出所有满足条件且不重复的三元组。
答案中不可以包含重复的三元组。
nums = [-1, 0, 1, 2, -1, -4]
n = len(nums)
nums = sorted(nums)
array = []
for i in range(n):
if nums[i] > 0:
a = i
break
for i in range(a):
for j in range(i + 1, n - 1):
for l in range(a, n):
if nums[i] + nums[j] + nums[l] == 0:
xyz = sorted([nums[i], nums[j], nums[l]])
if xyz not in array:
array.append(xyz)
print(array)