练习题

  1. 给定一个整数数组 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)
  1. 给定两个大小为 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))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值