算法

'''
https://blog.csdn.net/qq_40056626/article/details/81224187
https://www.cnblogs.com/wuxinyan/p/8615127.html
抓了a,b,c,d四名犯罪嫌疑人,其中有一人是小偷,审讯中:

•a说我不是小偷;
•b说c是小偷;
•c说小偷肯定是d;
•d说c胡说!

其中有三个人说的是实话,一个人说的是假话,请编程推断谁是小偷。

四个犯人编号1,2,3,4,

a说:thief != 1

b说:thief  = 3

c说:thief  = 4

d说:thief != 4
'''
thief = {1:'a',2:'b',3:'c',4:'d'}
for i in range(4):
    i += 1
    if 3 == ((i != 1) + (i == 3) + (i == 4) + (i != 4)):
##        str = chr(96 + i) + "是小偷!"
        print(thief[i]+ "是小偷!")

'''
随机产生10个10以内的整型数,存放到列表中,将列表中的最大值放在列表的最后
'''
l=[]
import random
for i in range(10):
    m = random.randint(0,9)
    l.append(m)
    l.sort()
##    l.sort(reverse=True) #将列表中的最大值放在列表的最前面
print(l)

'''
求区间[100, 200]内10个随机整型数的最大值
'''
import random
L=[]
for i in range(10):
    m = random.randint(100,200)
    L.append(m)
L=max(L)
print(L)

'''
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:'

'''

import time
start1=time.perf_counter()
def twosum(nums,target):
    l = len(nums)
    for i in range(l-1):
        for j in range(i+1,l):
            if nums[i]+nums[j]==target:
                return [i,j]
##                return nums[i],nums[j]

a=[2,7,11,15]
b=9
print(twosum(a,b))
end1=time.perf_counter()
print(end1-start1)

start2=time.perf_counter()
def twosum2(nums,target):
    l=len(nums)
    for i in range(l):
        another = target-nums[i]
        if another in nums:
            j = nums.index(another)
            if i==j:
                continue
            else:
                return[i,j]
print(twosum2(a,b))
end2=time.perf_counter()
print(end2-start2)
    



原文地址:https://www.cnblogs.com/beiyue/p/10746809.html