python - 我的方法是蛮力搜索还是线性搜索?
问题描述
我的问题如下:
给定一个整数值序列,确定序列中是否有一对不同的数字,其乘积为奇数。请为此问题提供两个 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
现在我的问题是,这是一种蛮力方法还是“线性扫描”方法?我需要如何以不同的方式处理它?
解决方案
既然你说不同,你可以使用一组:
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
推荐阅读
- javascript - 重构复杂的多条件 if-else 语句
- python - 根据 a 标签的 name 属性中的特定文本查找 Href
- .net-core - 如何使用 StackExchange.Redis 使多个操作原子化
- python - “Microsoft Build Tools 2015”与“Visual C++ Build Tools 2015”有何不同?
- reactjs - Enzyme 双重潜入 Provider 内部的组件
- sql - 特定字符之前的 Oracle substr
- django - 更新时的条件保存()?
- ubuntu - 在 Ubuntu 上使用 Pycharm Professional 的 TFS
- windows - 使用 PowerShell 检查回收站是否已损坏
- javascript - 使用字符串中的道具渲染任何子组件