- 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
def towsum(nums,target):
for i in range(len(nums)):
for j in range(i+1,len(nums)):
if nums[i] +nums[j]==target:
print('下标是{0},{1},对应值是{2},{3}'.format(i,j,nums[i],nums[j]))
nums=[2,7,11,15,7,3,6]
target=9
towsum(nums,target)
- 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数。并且要求算法的时间复杂度为 O(log(m + n))。–时间复杂度不会
nums1 = [1, 9,80,77,2]
nums2 = [3, 4,7]
for j in nums2:
nums1.append(j)
nums1.sort()
a=int(len(nums1)/2)
if len(nums1)%2==0:
zhongwei = (nums1[a-1]+nums1[a])/2
else:
zhongwei=nums1[a]
print(zhongwei)
最大整除子集
给出一个由无重复的正整数组成的集合,找出其中最大的整除子集,子集中任意一对 (Si,Sj) 都要满足:Si % Sj = 0 或 Sj % Si = 0。
如果有多个目标子集,返回其中任何一个均可:
1.写一个判断被除数是否可以被列表中的所有数字整除的函数
2.初始化一个放整除子集的列表li,如果li不是空列表,循环列表b,则判断b中的数是否能被li列表的所有数整除,如果都能整除,放到li中
3. 初始化一个列表c和长度length=0,如果子集li长度大于length,将len(li)赋值给length,li复制给c,最后得到最长的子集
a=[1,2,4,8]
b=list(set(a)) #使用集合可以直接去重且进行排序
c=[]
def zhengchu(beichushu,chushu): #判断某一个被除数是否可以被列表中的所有数字整除,如果除数列表为空也是可以使用的
for j in chushu:
if beichushu % j == 0:
continue
else:
return False
return True
for i in range(len(b)):
li=[] #在这里初始化
for j in b:
if j%b[i]==0 and zhengchu(j,li)==True:
li.append(j)
if length<len(li): #得到最长子集
length=len(li)
c=li[:]
# c.append(li)
print('最大整除子集',c)
无重复字符的最长字串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
a='pwwkewywy'
def zuichangzichuan(a):
#b=[]
res = 0 #初始化一个长度值
for i in range(len(a)):
li = [] #每次循环时候,初始化一个空列表,拿来存放子集
for j in a[i:]: #取这个位置之后的值进行比较
if j not in li: #子集里没有,就加进去
li.append(j)
else:
break
res = max(res, len(li)) #取子集长度和res的最大值
#b.append(li)
return res#,b
# print(b)
print(zuichangzichuan(a))