这是一道google的比较经典算法题,题目是:已经两个已经排好序的数组,找出两个数组合起来的中间大的数字。要求算法复杂度尽可能低。如:x数组:1,7,9,10,30 y数组:3,5,8,11 则中间大数为:8
下面是我自己想的算法。
public class GetMiddleValue
{
public static void main(String[] args)
{
int[] a = {1, 7, 9, 10, 30};
int[] b = {3, 5, 8, 11};
getMiddleValue(a, b);
getMiddleValue2(a, b);
}
public static void getMiddleValue(int[] a, int[] b)
{
int n = (a.length + b.length + 1)/2;
int i = 0;
int j = 0;
int sum = 0;
int middle = 0;
boolean flag = true;
while(i < a.length && j < b.length)
{
if(a[i] <= b[j])
{
i++;
middle = a[i-1];
}
else
{
j++;
middle = b[j-1];
}
sum++;
if(sum == n)
{
System.out.println("The middle number is : " + middle);
flag = false;
break;
}
}
if(flag)
{
if(i == a.length)
{
while(sum < n)
{
j++;
sum++;
}
middle = b[j-1];
}
else
{
while(sum < n)
{
i++;
sum++;
}
middle = a[i-1];
}
System.out.println("The middle number is : " + middle);
}
}
public static void getMiddleValue2(int[] a, int[] b)
{
int n = (a.length + b.length + 1)/2;
int i = 0;
int j = 0;
int middle = 0;
while(i < a.length && j < b.length && n > 0)
{
if(a[i] <= b[j])
{
i++;
middle = a[i-1];
}
else
{
j++;
middle = b[j-1];
}
n--;
}
if(n == 0)
{
System.out.println("The middle number is : " + middle);
}
else
{
if(i == a.length)
{
while(n > 0)
{
j++;
n--;
}
middle = b[j-1];
}
else
{
while(n > 0)
{
i++;
n--;
}
middle = a[i-1];
}
System.out.println("The middle number is : " + middle); }
}
}
//算法说明
//若两个数组合并起来有奇数个数,如9个, 则第5个为中间那个数
//若两个数组合并起来有偶数个数,如10个,则第5个为中间那个数
分享到:
相关推荐
AB序列,是一道经典的算法题。可以google搜索“AB”序列。 这儿是Java实现代码
一道 Google 竞赛题的解法
2. 一个 string S, 砍成两段,问有多少种存在的方式使得这两段 string 中的 number of 3. 一道 DP 在棋盘里面分蛋糕问题 4.
算法题: 1.连接两个单向链表,返回排序后的结果。 2.一个保存有10000个URL的文本文件,删除其中相同的URL。 3.将9个石子放在9x9的方格中,要求同行、同列、45度上无两个石子。 智力题: 。。。。。 网易笔试...
应对棘手算法题的5种行之有效的方法通过这5种方法,你可以学会如何处理并攻克算法难题,包括那些最棘手的算法题。面试者最容易犯的10个错误不要因为这些常见的错误而与成功失之交臂。要了解面试者常犯的一些错误,...
在这里推荐一个谷歌大佬的刷题笔记,每一道题的题解都写得非常清楚。作者在美国卡内基梅隆大学攻读硕士学位时,为了准备实习秋招,他从夏天开始整理 Leetcode 上的题目,几个月的时间,刷了几百道题目。 凭借着扎实...
java_leetcodeLeetCode 成为 Google 筛选码工的重要途径之一,可见 LeetCode 上面的题的重要性,因此开个项目,每周来刷一道题。通过刷题,更好的学习算法。算法算法对于我们的逻辑思维的锻炼是非常重要的,虽然知道...
应对棘手算法题的5种行之有效的方法通过这5种方法,你可以学会如何处理并攻克算法难题,包括那些最棘手的算法题。面试者最容易犯的10个错误不要因为这些常见的错误而与成功失之交臂。要了解面试者常犯的一些错误,...
leetcode中国 home comment heroImage footer true false /favicon.png ...算法是很重要的基础素质,而且也能保持你的思维状态。可能你在工作中,很多业务,很难用得上算法。...每一道题,你不看题解完全独立做
本书是原谷歌资深面试...第8~9 章从数据结构、概念与算法、知识类问题和附加面试题4 个方面,为读者呈现了出自微软、苹果、谷歌等多家知名公司的150 道编程面试题,并针对每一道面试题目,分别给出了详细的解决方案。
本书是原谷歌资深面试...第8~9 章从数据结构、概念与算法、知识类问题和附加面试题4 个方面,为读者呈现了出自微软、苹果、谷歌等多家知名公司的150 道编程面试题,并针对每一道面试题目,分别给出了详细的解决方案。
亚马逊超级畅销书,...第8~9 章从数据结构、概念与算法、知识类问题和附加面试题4 个方面,为读者呈现了出自微软、苹果、谷歌等多家知名公司的150 道编程面试题,并针对每一道面试题目,分别给出了详细的解决方案。
第8~9 章从数据结构、概念与算法、知识类问题和附加面试题4 个方面,为读者呈现了出自微软、苹果、谷歌等多家知名公司的150 道编程面试题,并针对每一道面试题目,分别给出了详细的解决方案。 本书适合程序开发和...
第8~9 章从数据结构、概念与算法、知识类问题和附加面试题4 个方面,为读者呈现了出自微软、苹果、谷歌等多家知名公司的150 道编程面试题,并针对每一道面试题目,分别给出了详细的解决方案。 本书适合程序开发和...
第8~9 章从数据结构、概念与算法、知识类问题和附加面试题4 个方面,为读者呈现了出自微软、苹果、谷歌等多家知名公司的150 道编程面试题,并针对每一道面试题目,分别给出了详细的解决方案。 本书适合程序开发和...
之前做题,几乎只能去参考Leetcode里面Discussion的解法和Google别人的解法,一道题当时做完觉得没什么貌似是理解了,但是等一段时间再次碰到,又不知道如何下手,这就是典型的没有理解和掌握透。所以在这里,我们...
题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。
由于研修过程中要准备数学建模国赛,故本次研修的主要结果是国赛前的一道练习题及其解答过程。主要内容如下: 1) 学会查资料。学会使用学校图书馆的数据库,谷歌高级搜索,来查找文献资料。 2) 去图书馆借书,书本...
front-end-interview 前端面试问题汇总 本面试问题由汇总 Github开源面试问题 ...由一道题完善自己的前端知识体系! 笔试刷题·推荐网站 牛客网-专业IT笔试面试备考 LeetCode - The World's Leading Onlin
可以在新标签页, 展示一道与程序相关的问题或相关新闻。涵盖了不同的编程语言, 算法, 数据结构等 【插件相关文章】 Astro Bot 用新标签页刷编程题 【插件开发者】 @jordan.evan.campbell 【插件更新】 ...