数组
1.要求输入一个整数N
,用动态数组A
来存放2~N
之间所有5或7的倍数,输出该数组。
思路:先令一个空数组,再用if判断语句把能把5或7整除的数找出来,再把这个数插进空数组里面。循环操作。
def zhengchu(N):
array=[]
for i in range(2,N+1):
if i%5==0 or i%7==0:
array.append(i)
else:
i=i
print(array)
zhengchu=zhengchu(99)
[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]
- 托普利茨矩阵问题
https://leetcode-cn.com/problems/toeplitz-matrix/
如果一个矩阵的每一方向由左上到右下的对角线上具有相同元素,那么这个矩阵是托普利茨矩阵。
给定一个M x N
的矩阵,当且仅当它是托普利茨矩阵时返回True
。
思路:按照定义,我们分如下的情况进行讨论:
- 1.要判断是否每行元素是否相等,若不相等,则不是矩阵。
- 2.思路一:硬刚法:用嵌套循环来判断matrix[i][j]与 matrix[i+1][j+1]是否相等
- 3.思路二:用一个for循环前行中除最后一个元素外剩余的元素完全等于后行中除第一个元素外剩余的元素,即matrix[i][:-1] 与matrix[i + 1][1:]是否相等
def juzhen(matrix):
row=len(matrix)#行数
col=len(matrix[0]) #列数
for i in range(1,len(matrix)):
if len(matrix[i])!=col:
print('你输入的不是矩阵')
for i in range(0,row-1):
for j in range(0,col-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]
]
a=juzhen(matrix)
a
True
leedcode 结果
- 52ms,13.3mb
3. 三数之和
https://leetcode-cn.com/problems/3sum/
给定一个包含 n 个整数的数组nums
,判断nums
中是否存在三个元素a,b,c
,使得a + b + c = 0
?找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
思路:
算法流程:
- 1.特判,对于数组长度 n,如果数组为 null 或者数组长度小于 3,返回 []。
- 2 对数组进行排序。
- 3.遍历排序后数组:
- 若 nums[i]>0:因为已经排序好,所以后面不可能有三个数加和等于 00,直接返回结果。
- 对于重复元素:跳过,避免出现重复解 力扣没有pandas库,不能用pd.unique(nums).tolist()
- 令左指针 L=i+1,右指针 R=n-1,当 L<R 时,执行循环:
- 当 nums[i]+nums[L]+nums[R]==0,执行循环,判断左界和右界是否和下一位置重复,去除重复解。并同时将 L,R 移到下一位置,寻找新的解
- 若和大于 0,说明 nums[R] 太大,R 左移
- 若和小于 0,说明 nums[L] 太小,L 右移
def threesum(nums):
import numpy as np
n=len(nums)
res=[]
#先判断数组是否是否为空或者长度小于3
if len(nums)<3:
return res
nums=np.sort(nums) #升序排列
for i in range(n):
if (nums[0]>0):
return res
if(i>0 and nums[i]==nums[i-1]):
continue
L=i+1
R=n-1
while(L<R):
sum=nums[L]+nums[i]+nums[R]
if(sum==0):
res.append([nums[L],nums[i],nums[R]])
while(L<R and nums[L]==nums[L+1]):
L=L+1
while(L<R and nums[R]==nums[R-1]):
R=R-1
L=L+1
R=R-1
elif(sum>0):
R=R-1
else:
L=L+1
return res
nums = [-1, 0, 1, 2, -1, -4]
ans=threesum(nums)
ans
[[-1, -1, 2], [0, -1, 1]]