一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现。
2013-03-19 16:24
561 查看
一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现。0是例外,可以反复出现。
请设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻。
注意:
- 5个数值允许是乱序的。比如: 8 7 5 0 6
- 0可以通配任意数值。比如:8 7 5 0 6 中的0可以通配成9或者4
- 0可以多次出现。
- 复杂度如果是O(n2)则不得分。
思路:
非0最大-非0最小+1
<=5 ==> 非0最大-非0最小 <=4
请设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻。
注意:
- 5个数值允许是乱序的。比如: 8 7 5 0 6
- 0可以通配任意数值。比如:8 7 5 0 6 中的0可以通配成9或者4
- 0可以多次出现。
- 复杂度如果是O(n2)则不得分。
思路:
非0最大-非0最小+1
<=5 ==> 非0最大-非0最小 <=4
#include<stdio.h> int main() { int a[5] = {1,3,6,0,0}; int i = 0; int min = 65535; int max = 0; for(; i<5; i++) { if(a[i] != 0) { if(min > a[i]) min = a[i]; if(max < a[i]) max = a[i]; } } int diff = max - min; if(diff <= 4) printf("OK!\n"); else printf("NO!\n"); return 0; }
相关文章推荐
- 12、一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现。0是例外,可以反复出现。 请设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻。
- 一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现。0是例外,可以反复出现......
- 15、一个整数数列,元素取值可能是1~N(N是一个较大的正整数)中的任意一个数,相同数值不会重复出现。
- 一个整数数列,元素取值可能是1~N(N是一个较大的正整数)中的任意一个数,相同数值不会重复出现。设计一个算法,找出数列中符合条件的数对的个数,满足数对中两数的和等于N+1
- 取值为[1,n-1]含n个元素的整数数组,至少存在一个重复数,即可能存在多个重复数,O(n)时间内找出其中任意一个重复数,不使用额外存储空间。
- 面试题精选(79):取值为【1,n-1】含n个元素的整数数组至少存在一个重复数,O(n)时间内找出其中任意一个重复数
- 取值为[1,n-1] 含n 个元素的整数数组至少存在一个重复数,O(n) 时间内找出其中任意一个重复数
- 给定一个整数数组,两个数字的返回索引将它们加到一个特定的目标中。 您可以假设每个输入都只有一个解决方案,并且您可能不会两次使用相同的元素。
- 给定一个整数数组,其中元素的取值范围为0到10000,求其中出现次数最多的数
- 取值为[1,n-1]含n个元素的整数数组至少存在一个重复数,找出一个重复元素
- 求一个数组中重复元素出现最多值,最大的元素及出现次数,次数相同时,取最大值,优先考虑次数
- 求一个数组中重复元素出现最多值,最大的元素及出现次数,次数相同时,取最大值,优先考虑次数
- 在一个有序数组中,有些元素重复出现。输入一个数值,求此值在数组中重复的次数
- 156 含n个元素的整数数组至少存在一个重复数,在 O(n)时间内找出其中任意一个重复数
- C++ - 一个非递减数组,下标从0到n,元素的取值范围为从0到n的整数,判断其中是否有重复元素
- 一个含n个元素的整数数组至少存在一个重复数, 请编程实现,在O(n)时间内找出其中任意一个重复数。
- 给定一个整数数组,其中元素的取值范围为0到10000,求其中出现次数最多的数
- C++[算法]给定一个具有100个元素的数组,请对该数组随机赋值1-100,不能出现重复的值
- 每天一道LeetCode-----一个整数序列,每个元素出现两次,只有一个(两个)出现一次,找到这个(这两个)元素
- 为dialog添加items,并且控制每个activity只能出现一个dialog,不会重复弹出