class Solution:
def findSmallest(nums):
smallest=nums[0]
smallest_index=0
for i in range(1,len(nums)):#0已经设置完了
if smallest>nums[i]:
#它不需要储存中间值,因为python是重建一个列表,并把重建的列表元素储存在新列表中
smallest=nums[i]
#不过底部的索引必须记住
smallest_index=i
def containsDuplicate(self, nums: List[int]) -> bool:
newNums=[]
for i in range(len(nums)):
smallest=findSmallest(nums)
newNums.append(nums.pop(smallest))
for i in range(len(newNums)):
if newNums[i]==newNums[i+1]:
return true
break
return false
我知道用python一行就可以解决,但我还是想用这种选择排序再比较相邻元素的方法,因为是我自己想出来的方法
报错信息如下:
NameError: name 'findsmallest' is not defined
smallest=findsmallest(nums)
Line 14 in containsDuplicate (Solution.py)
ret = Solution().containsDuplicate(param_1)
Line 43 in _driver (Solution.py)
_driver()
Line 54 in (Solution.py)
按你的思路写了一个简化版本
from typing import Mapping
test_num_lists = [
[5, 2, 0, 6, 8, 9, 1, 20, 15, 18], # 无重复
[19, 38, 24, 15, 800, 1], # 无重复
[59, 48, 35, 19, 59, 78], # 有重复
[], # 空
[1] # 单个元素
]
def solution(num_list: list):
num_list.sort() # 排序
last_num = 0 # 存储上一个数据
list_index = 0 # 存储index
for each in num_list:
if list_index > 0: # 如果不是第一个数:
if each == num_list[list_index - 1]: # 比较
return True # 有重复,记得True关键字首字母要大写
# else:pass
list_index += 1
return False # 如果扫描完文档还没找到重复数字
for num_list in test_num_lists:
print(solution(num_list))
你的findSmallest没有返回值,而你的第二个函数中却是以返回值的形式调用的,但是至于这个报错未定义就很迷惑了