如何判断一个数组中数值是否连续相邻

如何判断一个数组中数值是否连续相邻问题描述 一个数组序列 元素取值可能是 065535 中的任意一个数 相同数值不会重复出现 0 可以重复出现 当从该数组序列中随机选取 5 个数值 判断这 5 个数值是否连续相邻 需要注意 4 点 1 5 个数值允许是乱序的 例如 8 7 5 0 6 2

大家好,我是讯享网,很高兴认识大家。

问题描述:

一个数组序列,元素取值可能是0--65535中的任意一个数,相同数值不会重复出现。0可以重复出现。当从该数组序列中随机选取5个数值,判断这5个数值是否连续相邻。

需要注意4点:
 1.) 5个数值允许是乱序的,例如{8,7,5,0,6}
 2.) 0可以通配任意数值,例如{8,7,5,0,6}中的0可以通配成9或4
 3. )0可以多次出现
 4. )全0算连续,只有一个非0算连续


讯享网

实现思路:

1)如果没有0的存在,要组成连续的数列,最大值和最小值的差距必须是4
2)存在0的情况下,只要最大值和最小值的差距小于4就可以了,
所以应找出数列中非0的最大值和非0的最小值,时间复杂度为O(n)

实现代码:

package JBArray; public class IsContinuous { / * 如果没有0的存在,要组成连续的数列,最大值和最小值的差距必须是4 * 存在0的情况下,只要最大值和最小值的差距小于4就可以了, * 所以应找出数列中非0的最大值和非0的最小值,时间复杂度为O(n) * @param a * @return */ private static boolean IsContinous(int[] a) { int len = a.length; int min = -1, max= -1; for(int i=0; i<len; i++){ if(a[i] != 0){ if(min>a[i] || min==-1) min = a[i]; if(max<a[i] || max==-1) max = a[i]; } }//for if(max - min > len-1) return false; else return true; } public static void main(String[] args) { int a[] = {8,7,5,0,6}; if(IsContinous(a)){ System.out.println("{8,7,5,0,6}相邻"); }else System.out.println("{8,7,5,0,6}不相邻"); } } 

讯享网

 

小讯
上一篇 2025-03-19 08:01
下一篇 2025-03-13 16:50

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/57454.html