Algs4-1.4.12找出两个有序数组的公共元素-方法1
1.4.12编写一个程序,有序打印给定的两个有序数组(含有N个int值)中的所有公共元素,程序在最坏情况下所需的运行时间应该和N成比。
答:
import java.util.Arrays;
public class TheSameElement
{
public static void main(String[] args)
{
int[] a1=In.readInts(args[0]);
int[] a2=In.readInts(args[1]);
Arrays.sort(a1);
Arrays.sort(a2);
int a1lo=0;
int a2lo=0;
int a2KeyIndex=0;
while (a1lo<a1.length && a2lo<a2.length)
{
a1lo=rankMax(a1,a1lo,a1.length-1,a1[a1lo]);
a2KeyIndex=rankMax(a2,a2lo,a2.length-1,a1[a1lo]);
if(a2KeyIndex!=-1)
{
StdOut.println(a1[a1lo]);
a2lo=a2KeyIndex+1;
}
a1lo++;
}
}
private static int rankMax(int[] a,int lo,int hi,int key)
{
int keyIndex=-1;
while(lo<=hi)
{
int mid=lo+(hi-lo)/2;
if (key<a[mid]) hi=mid-1;
else if(key>a[mid]) lo=hi+1;
else
{
keyIndex=mid;
lo=mid+1;
}//end if
}//end while
return keyIndex;
}//end rankMax
}
转载于:https://www.cnblogs.com/longjin2018/p/9854418.html
Algs4-1.4.12找出两个有序数组的公共元素-方法1相关推荐
- C++leetcode找出两个有序数组的中位数(2)
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 如果不考虑复杂度的话这个题目很简单:将两 ...
- 高效的找出两个List中的不同元素
转自同名博文,未知真正出处,望作者见谅 如题:有List<String> list1和List<String> list2,两个集合各有上万个元素,怎样取出两个集合中不同的元素 ...
- 找出两个List集合重复的元素
前几天,有个同事问我说怎么找出两个List集合中重复的元素,我当时就说一个集合在外面循环,一个集合在内循环,如果两个元素相等了,就找出来了,我回来一想还是不对,要是数据非常多,这样循环下去,服务器会卡 ...
- 找出两列表的共有元素python_python 找出两个dataframe中不同的元素
pandas从Excel中读取数据,数据格式为dataframe格式 用for循环对进行两个列的数据比较想找出不同的元素时,发现数据是一样的,但是比较结果却是相同和不同的都存在(总之就是不是我以为的效 ...
- python 找出两个dataframe中不同的元素
pandas从Excel中读取数据,数据格式为dataframe格式 用for循环对进行两个列的数据比较想找出不同的元素时,发现数据是一样的,但是比较结果却是相同和不同的都存在(总之就是不是我以为的效 ...
- 找出两个字符串数组中的相同元素
public static List<String> getAllSameElement1(String[] strArr1,String[] strArr2) { if(strArr1 ...
- 给定两个单链表,编写算法找出两个单链表的公共结点(暴力解题,优化解题)
算法思想一:暴力解题,设置两个指针p,q,其中q遍历一次单链表,q向后移动一位,直到两个指针指向同一个结点为止. void search(LinkList L, LinkList S){ LNode ...
- 递归分治问题之找出两个有序序列的中间值
问题描述: You are interested in analyzing some hard-to-obtain data from two separate databases. Each dat ...
- 用四种方法Python求出两个有序数组中的中位数
方法一: def median_1(A, B):# 思路一: 先组合成一个有序数列,再取中位数# 时间复杂度O(m+n)len_A = len(A)len_B = len(B)C = []if len ...
最新文章
- Grafana常用的监控
- Android下实现数据绑定功能
- Python快速学习09: 函数的参数
- 前端学习(2852):简单秒杀系统学习之鼠标点击方法
- android小游戏模版—重力感应
- 21天Jmeter打卡Day20 响应断言,JSON断言
- 安卓手机使用VNET抓包京东wskey
- 英语语法之后缀决定词性
- MySQL中的any_value()函数
- java之excel模板下载
- MATLAB之极限、积分、微分
- 【AUDIO音频兴趣拓展】如何测试喇叭端功率?音频功放输出端测试到波形为方波
- [CF1091F](New Year and the Mallard Expedition)
- 华为为LG Uplus提供10万个NB-IoT芯片和模块
- html中aspx的cs文件是css吗,在asp.net 中怎么在.aspx.cs的文件里写代码来改变页面的颜色...
- 上千年等待终唤“热潮“,汉服的未来会一帆风顺吗?
- c语言中有余数的除法,《有余数的除法》课堂实录
- 2023年软考信息安全工程师备考学习笔记汇总
- springBoot 接受post参数
- Android编程小技巧