剑指offer03-数组中重复的数字
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
算法思想: 先对数组进行排序,排序之后遍历数组,如果有相邻的数字是相同的,则返回。
LeetCode代码:
class Solution:
def findRepeatNumber(self, nums: List[int]) -> int:
nums.sort()
pre = nums[0]
n = len(nums)
for index in range(1, n):
if pre == nums[index]:
return pre
pre = nums[index]
本地实现代码:
def search():
pre=nums[0]
for index in range(1,n):
if pre==nums[index]:
return pre
pre=nums[index]
arr=input()
nums=[int(n) for n in arr.split()]#根据空格键将输入的数字隔开成数组
n=len(nums)
#print(nums)
#print(n)
nums.sort()
pre=nums[0]
search()
注:在for循环里面return想要跳出循环会报错'return' outside function
,也就是语法错误。
原因是:return只能写在def函数里面,即:
def search():
pre=nums[0]
for index in range(1,n):
if pre==nums[index]:
return pre
pre=nums[index]
arr=input()
nums=[int(n) for n in arr.split()]#根据空格键将输入的数字隔开成数组
n=len(nums)
nums.sort()
pre=nums[0]
search()
Python错误:如果在LeetCode上面运行结果为null,可能是缩进导致了代码的逻辑问题。