データ構造とアルゴリズム(01)アレイ

# 作业1
"""
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

"""
def getnumber(N):
    a = []
    for i in range(1,N+1):
        if i % 5 == 0 or i % 7 == 0:
            a.append(i)
    return a
N = 100
print(getnumber(N))

出力:[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]

# 作业2
"""
2. 托普利茨矩阵问题

如果一个矩阵的每一方向由左上到右下的对角线上具有相同元素,那么这个矩阵是托普利茨矩阵。

给定一个M x N的矩阵,当且仅当它是托普利茨矩阵时返回True。

示例:
输入:
matrix = [
  [1,2,3,4],
  [5,1,2,3],
  [9,5,1,2]
]

输出: True

"""
def tupl(matrix):
    for i in range(len(matrix)-1):
        for j in range(len(matrix[0])-1):
            if matrix[i][j] != matrix[i+1][j+1]:
                return False
    return True
matrix = [
  [1,2,3,4],
  [5,1,2,3],
  [9,5,1,2]
]
print(tupl(matrix))

# 作业3

def threesum(nums):
    result = [] # 结果
    nums.sort() # 排序
    if len(nums)<3:
        return []
    for i in range(len(nums)):
        if nums[i]>0:
            break  # 排序后第一个结果大于0,不可能有三个数之和为0
        elif i>0 and nums[i] == nums[i-1]:
              continue
        L = i+1
        r = len(nums)-1
        while L <r:
            if nums[i] + nums[L] + nums[r] == 0:
                result.append([nums[i],nums[L],nums[r]])
                L+=1
                r-=1
            elif nums[i] + nums[L] + nums[r] != 0:
                L+=1 
                r-=1
    return result

nums = [-1, 0, 1, 2, -1, -4]

print(threesum(nums))
                
              

完了した
20ミリ秒:ときに実行
入力
[-1、0、-1、-4]
出力
- [1,0,1] [-1、-1,2]、[]
成果
- [[ 1、1,2]、[ - 1,0,1]

おすすめ

転載: www.cnblogs.com/yangjiez/p/12158944.html