首页 > 解决方案 > 我的方法是蛮力搜索还是线性搜索?

问题描述

我的问题如下:

给定一个整数值序列,确定序列中是否有一对不同的数字,其乘积为奇数。请为此问题提供两个 Python 函数,oddpair_bf() 和oddpair_linear()。该函数将给定的整数序列作为列表。oddpair_bf() 函数使用蛮力方法并依次检查可能的对。当存在乘积为奇数的pair时,返回True;否则,它报告 False。第二个,oddpair_linear(),使用线性扫描方法,将访问每个元素一次。Pleace 有一种方法可以通过线性扫描来确定这一点。

我尝试自己解决它并得到:

def oddpair_bf(list):
    for i in list:
        for j in list:
            if i != j:
                product = i*j
                if product & 1:
                    return True
    return False

现在我的问题是,这是一种蛮力方法还是“线性扫描”方法?我需要如何以不同的方式处理它?

标签: pythonpython-3.xlistbrute-forcelinear-search

解决方案


既然你说不同,你可以使用一组:

def oddpair_linear(seq):
    return len({s for s in seq if s&1})>1

或者更好的方法

def oddpair_linear(seq):
    found=0
    for s in seq:
        if s&1:
            if not found:
                found=s
            else:
                return True
    return False

推荐阅读