前些天去面试一家做ipad开发的公司,第一道题是找出1000个数(1-999)中一个重复的数。这1000个数是连续且乱序的。我的第一反应就是创建一个999的数组,然后根据数字找相应的数组下标,如果对应的为空则填充,如果有值则找到了重复的数。python版的解法如下:
# 创建测试数据,1000个数,随机排序,为了简单用了0-999
# 使用数组的方式查找
该方法是时间复杂度最低的,但是空间复杂最高。面试过后才想明白其实存储那1000个数的数组(这里是lst)本身就是存储空间,我无须再创建一个临时的1000数组。只要创建一个用于保存临时交换数字的空间就可