欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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)
相关标签: Datawhale