给定一个整数数组,找出数组中不存在的最小的正整数。该数组还可以包含重复数和负数。Python实现
2018-07-23 16:18
651 查看
版权声明:如需转载,请联系本人。 https://blog.csdn.net/stronking/article/details/81169542
原题如下:
思路:首先我们的目标是寻找一个从k=1开始最小且不在数组内的的正整数,返回这个正整数。那么我们首先要考虑的就是将整数数组内的负数去除,然后遍历得到的数组,从一开始比较比较数组中最小的数,如果小于数组中最小的数,就输出k=1,否则删除数组中的这个数,比较第二比较小的数,此时k+=1。一次类推开始执行,直到输出k之后,跳出遍历循环,结束程序。
[code] a =[4,5,0,1,-2,-3] c = [] #去除负数 for i in a: if i > 0: c.append(i) #如果c数组为空的话,最小正整数为1 if len(c)==0: print(1) else: #否则,取出数组中最小的值 b = min(c) k = 1 #开始比较 while k <= b: if k < b: print(k) break while k == b: #再去除最小,开始比较 c.remove(b) try: b = min(c) except ValueError as error: print(b+1) k = k + 1
嗯,经过一晚上的讨论,还有一下实现方式。2018-7-24实现。
[code]def serche(list1): num = 1 while True: if num not in list1: print(num) break num+=1 s=[1,1,2,3,4,4,4] serche(s)
如有更好的解答方法,请分享一下。
阅读更多相关文章推荐
- 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大 java实现
- 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大
- 给定一个无序整型数组,找出数组中未出现的最小整数
- 给定一个整数数组(有正数有负数),找出总和最大的连续数列,并返回总和。
- 给定一个数组,找出数组缺少的最小的正整数
- 给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次,编写代码找出数组中的某个元素
- 一个长度为N的数组中包含正数 负数 0,请实现一个函数找出和为0的最长子数列
- 程序员面试金典——解题总结: 9.17中等难题 17.8给定一个整数数组(有正数有负数),找出总和最大的连续数列,并返回总和
- leetcode:java.T018_4Sum---给定一个整数数组,找出a + b + c + d = target的唯一解,不能有重复元素组
- 一个含n个元素的整数数组至少存在一个重复数, 请编程实现,在O(n)时间内找出其中任意一个重复数。
- 9.11排序与查找(三)——给定一个排序后的数组,包含n个整数,但这个数组已被旋转过多次,找出数组中的某个元素
- 给定一个排序后的数组,包含n个整数,但这个数组已被旋转过多次,找出数组中的某个元素
- 新浪微博 陈利人 面试题 给定k个数组,每个数组有k个整数。每个数组中选取一个整数,一共k个整数,取其和,一共可以得到k^k个和。给出方法,求得这k^k个和中,最小的k个。
- 谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。
- 整型数组处理算法(九)给定任意一个正整数,求比这个数大且最小的“不重复数”(性能优化)[2014百度笔试题]
- 给定任意一个整数,找出比当前这个数大的最小的10个素数之和。
- 整型数组处理算法(九)给定任意一个正整数,求比这个数大且最小的“不重复数”(性能优化)[2014百度笔试题]
- 面试题精选(79):取值为【1,n-1】含n个元素的整数数组至少存在一个重复数,O(n)时间内找出其中任意一个重复数
- 取值为[1,n-1] 含n 个元素的整数数组至少存在一个重复数,O(n) 时间内找出其中任意一个重复数
- 取值为[1,n-1]含n个元素的整数数组至少存在一个重复数,找出一个重复元素