數組 2020-01-07

1. 利用動態數組解決數據存放問題

  • 編寫一段代碼,要求輸入一個整數N,用動態數組A來存放2~N之間所有5或7的倍數,輸出該數組。
-*- coding: utf-8 -*
import numpy as np

arr = []
N = input(">>>:")
for i in np.arange(2, np.int32(N)):
    if (i%5==0 or i%7 ==0):
        arr.append(i)
        
print(arr)

2. 託普利茨矩陣問題

import numpy.matlib
import numpy as np

m = [
    [1, 2, 3, 4],
    [5, 1, 2, 3],
    [9, 5, 1, 2]
]

print(len(m[0]))
x = np.matlib.empty((2, 2))
print(x[0])


def is_toeplitz_matrix(list):

    row = len(list)
    col = len(list[0])
    for i in np.arange(row - 1):
        for j in np.arange(col-1):
            if list[i][j] != list[i + 1][j + 1]:
                return False

    return True


res = is_toeplitz_matrix(m)
print(res)

3. 三數之和

def three_sum(nums):
    nums.sort()
    res = []
    n = len(nums)
    for i in range(n):
        if nums[i] > 0:    #最小的數大於0,和不可能爲0,直接退出
            break
        if i > 0 and nums[i] == nums[i - 1]:
            continue
        left = i + 1
        right = n - 1
        while left < right:
            nums_sum = nums[i] + nums[left] + nums[right]
            if nums_sum == 0:
                res.append([nums[i],nums[left],nums[right]])
                while left < right and nums[left] == nums[left+1]:
                    left+=1
                    continue
                while left < right and nums[right-1] == nums[right]:
                    right-=1
                    continue
                left+=1
                right-=1
            elif nums_sum < 0:
                left += 1
            elif nums_sum > 0:
                right -= 1

    print(res)
    print(nums)

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

three_sum(nums)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章