Task01:数组
理论部分
理解数组的存储与分类。
实现动态数组,该数组能够根据需要修改数组的长度。
练习部分
利用动态数组解决数据存放问题
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
import time
def ansofn(n):
A = []
for i in range(2,n+1):
if i%5==0 or i%7==0:
A.append(i)
print(A)
time_start=time.time()
ansofn(100)
time_end=time.time()
print('totally cost:',time_end-time_start)
[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]
totally cost: 0.0003731250762939453
import time
def ansofn(n):
i=1
A=[]
while 5*i<=n:
A.append(5*i)
if 7*i <=n:
A.append(7*i)
i=i+1
print(list(set(sorted(A))))
time_start=time.time()
ansofn(100)
time_end=time.time()
print('totally cost:',time_end-time_start)
[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]
totally cost: 0.00032711029052734375
2、托普利茨矩阵问题
如果一个矩阵的每一方向由左上到右下的对角线上具有相同元素,那么这个矩阵是托普利茨矩阵。
给定一个M x N的矩阵,当且仅当它是托普利茨矩阵时返回True。
# 思路:判断每个元素上面的元素和右边的元素是否相等即可, 所有的元素都符合就表示矩阵为托普利茨矩阵, 有一个元素不符合则不是, 其中第一行和最后一列不需要考虑
def isToeplitzMatrix(A):
for i in range(1,len(A)):
if A[i][1:] != A[i-1][:-1]:
return False
else:
return True
isToeplitzMatrix([
[1,2],
[2,2]
])
False
isToeplitzMatrix([
[1,2,3,4],
[5,1,2,3],
[9,5,1,2]
])
True
3、 三数之和
给定一个包含 n 个整数的数组nums,判断nums中是否存在三个元素a,b,c,使得a + b + c = 0?找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
def threesum(nums):
if not nums and len(nums)<3:#空或者少于三个元素不考虑
return False
res = []
nums.sort()#关键:升序排序
for i in range(len(nums)):
if nums[i]>0:#后面只能比它还大,所以和肯定不等于零
return res
if i>0 and nums[i] == nums[i-1]:#跳过重复解
continue
L = i+1
R = len(nums)-1
while L<R:
if nums[L]+nums[i]+nums[R]==0:
res.append([nums[i],nums[L],nums[R]])
while nums[L] == nums[L+1]:#跳过重复元素
L=L+1
while nums[R] == nums[R-1]:#跳过重复元素
R=R-1
L = L+1
R = R-1
elif nums[L]+nums[i]+nums[R]>0:#若和大于0,则应该是nums[R]大了,左移减小
R=R-1
elif nums[L]+nums[i]+nums[R]<0:#若和小于0,则应该是nums[L]小了,右移增大
L=L+1
print(res)
threesum([-1, 0, 1, 2, -1, -4])
[[-1, -1, 2], [-1, 0, 1]]