对一个已排序的数组,判断里面是否有两个唯一的元素,即这两个元素跟其他元素都不一样。
public class Search
{
public static void main(String[] args)
{
int[] a = {3, 3, 3, 4, 4, 5, 6, 6, 6, 7, 7, 8, 8, 8, 9};
search(a);
search2(a);
}
//好理解,但比较次数多
public static void search(int[] a)
{
int count = 0;
if(a[0] != a[1])
count++;
if(a[a.length-2] != a[a.length-1])
count++;
if(count < 2)
{
for(int i=1; i<a.length-1; i++)
{
if(a[i] != a[i-1] && a[i] != a[i+1])
{
count++;
if(count == 2)
break;
}
}
}
if(count >= 2)
System.out.println("Find!");
else
System.out.println("Not find!");
}
//比较次数少一点
public static void search2(int[] a)
{
int count = 0;
for(int i=0; i<a.length-1; )
{
if(a[i] != a[i+1])
{
if(i > 0 && a[i] != a[i-1])
count++;
else if(i == 0)
count++;
if(i < a.length-2 && a[i+1] != a[i+2])
count++;
else if(i == a.length-2)
count++;
if(count == 2)
break;
}
i = i + 2;
}
//数组a有奇数个元素时,比较最后两个元素是否相同
if(a.length % 2 != 0 && a[a.length-1] != a[a.length-2])
count++;
if(count >= 2)
System.out.println("Find!");
else
System.out.println("Not find!");
}
}
分享到:
相关推荐
C# 如何判断一个Byte数组中是否存在某些连续的数据).txtC# 如何判断一个Byte数组中是否存在某些连续的数据).txtC# 如何判断一个Byte数组中是否存在某些连续的数据).txt
将两个有序数组,合并成另一个有序的数组,升序。将两个有序数组,合并成另一个有序的数组,升序。将两个有序数组,合并成另一个有序的数组,升序
请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 示例 1: nums1 = [1, 3] nums2 = [2] 则中位数是 2.0 示例 2: nums1 = [1, 2] ...
【输出形式】程序将两个有序一维数组合并为一个有序数组并按照从小到大顺序输出。每个元素输出时用空格分隔,最后一个输出之后没有空格。 【样例输入】 6 2 5 8 11 20 35 4 1 6 15 60 【样例输出】1 2 5 6 8 11 15 ...
给定两个有序数组a b 使合并后的数组仍然有序 归并算法的事件复杂度为O logn
将一个数组中,已经有序的两部分,重新进行排序,得到排序后的有序完整数组。
有序数组中的单一元素给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。示例 1:输出: 2示例 2:输出: 10def sing
(1)设X[0:n-1]和Y[0:n-1]为两个数组,每个数组中含有n个已排好序的数,设计一个算法复杂度为O(logn)的分治算法,找出X和Y中2n个数中的中位数。(中位数:个数为奇数:中间位置上的数;个数为偶数,中间两个数的...
本篇文章主要介绍了java实现向有序数组中插入一个元素实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
在有序数组插入一个数,简单,无错,容易检验
最近2天用C#做的有序数组的建立,插入,查找,删除
合并两个有序数组
关于二叉树的程序,分别对无序数组和有序数组建立二叉树,实现遍历和查找。
主要为大家详细介绍了C++实现两个有序数组的合并,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
用C语言编写两个数组合并成一个数组,并有序排列 。数组合并。
c语言 c语言编程题之数组操作合并两个有序数组
合并两个有序数组.md
自己编写的程序,实现两个有序数组求交集。例如a={1,2,3,4,5,6,7},b={1,3,5,8,9,11},则结果为{1,3,5}
4. 寻找两个有序数组的中位数给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O
合并两个有序数组