找和为K的两个元素

所属作业: hw5 数据结构: 列表, 字典 算法: 循环

提示:

list(map(int,input().split()))

方法一:双重循环

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 找和为k的两个元素
# 首先,读取输入的序列长度n和目标和k
n, k = map(int, input().split())

# 读取序列中的n个整数,并将其存储在列表nums中
nums = list(map(int, input().split()))

# 初始化一个标志变量success,用于记录是否找到满足条件的元素
success = False

# 使用双重循环遍历所有可能的元素对
for i in range(n):
    for j in range(i + 1, n):  # 确保j总是大于i,避免重复检查同一对
        # 检查当前元素对的和是否等于k
        if nums[i] + nums[j] == k:
            if success == False:  # 如果还没有找到满足条件的元素对
                print("yes")  # 输出"yes"
                success = True  # 更新标志变量,表示已经找到满足条件的元素对

# 如果遍历完所有元素对后仍未找到满足条件的元素对
if success == False:
    print("no")  # 输出"no"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 首先,读取输入的序列长度n和目标和k
n, k = map(int, input().split())

# 读取序列中的n个整数,并将其存储在列表nums中
nums = list(map(int, input().split()))

# 使用双重循环遍历所有可能的元素对
for i in range(n):
    for j in range(i + 1, n):
        # 检查当前两个元素的和是否等于k
        if nums[i] + nums[j] == k:
            # 如果找到了这样的元素对,输出"yes"并退出程序
            print("yes")
            exit()

# 如果遍历完所有元素对都没有找到符合条件的,输出"no"
print("no")

方法二:set

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 首先,我们读取输入的两个整数 a 和 b
# a 是序列的长度 n,b 是我们要检查的目标和 k
a, b = map(int, input().split())

# 然后,我们读取序列中的 n 个整数
n = list(map(int, input().split()))

# 创建一个空集合,用于存储我们已经看到的数字
seen = set()

# 遍历序列中的每个数字
for i in n:
    # 计算当前数字 i 需要的目标数字,即 b - i
    target = b - i
    
    # 检查目标数字是否已经在集合 seen 中
    if target in seen:
        # 如果在,说明找到了两个数字的和为 b,输出 "yes"
        print("yes")
        exit()  # 找到后立即退出程序
    
    # 如果没有找到,将当前数字 i 添加到集合 seen 中
    seen.add(i)

# 如果遍历完所有数字后仍未找到,输出 "no"
print("no")