面试算法

转载 2018年04月16日 16:15:53

https://blog.csdn.net/lisuxuan_1993/article/details/41794273


给定两个数组X和Y,元素都是正数。请找出满足如下条件的数对的数目:

x^y > y^x,即x的y次方>y的x次方

x来自X数组,y来自Y数组

假设数组X的长度为m,数组Y的长度为n,最直接的暴力法,时间复杂度为O(m*n),但这样的话,并不需要都是正数这个条件的。那么,我们该如何优化呢?

x^y>y^x,对于x和y来讲,有什么规律呢?该如何发现呢?这里其实有规律的,大多数的条件下,当y>x的时 候,x^y>y^x,但是有一些例外,1,2,3,4几个数,需要特殊的考虑,比如2^4=4^2。这个大家可以通过在纸上写写画画来得到,相对繁琐,我们就不进一步分析了。

我们可否对于原式做一些数学变换呢?使得式子变化简单。如何去做呢?这个式子的复杂体现在两边都是指数的形式,如何变化一下呢?我们很自然的就想到,逆运算对数运算,则,两边取对数可得:ylog(x)>xlog(y)。这里同学们可能要问,可以直接取对数么?取对数之后,大小关系仍旧满足 么?这里是有两点保证的:

对数函数的性质,单调递增

题目中的说明:元素都是正数

对于式子:ylog(x)>xlog(y),x和y都是正数,则进一步有:两边同时除以xy,则:log(x)/x >log(y)/y。这个式子,看起来也复杂,但是,x和y都在各自的一边,要简单的多。

对于log(x)/x >log(y)/y,

数组X和Y分别计算log(x)/x,log(y)/y

然后对Y进行排序O(nlogn)

遍历X数组,对于每一个x,在Y中,进行二分查找,即可。

总的时间复杂度为O(nlogn + mlogn).


[玩转算法面试]什么是算法面试?

算法面试 什么是算法面试? ·不代表能够“正确回答”每个算法问题,合理的思考方向更重要,是正确完成算法面试的前提; ·算法面试优秀不意味着技术面试优秀; ·技术面试的游戏不意味着能够拿到offer 对...
  • wzhCAlex
  • wzhCAlex
  • 2017-08-06 15:00:41
  • 470

面试常考算法题总结(二)

题目链接:试卷1和试卷2。 题目1:对于一个无序数组A,请设计一个算法,求出需要排序的最短子数组的长度。给定一个整数数组A及它的大小n,请返回最短子数组的长度。 测试样例: [1,5,3,4,2...
  • JIEJINQUANIL
  • JIEJINQUANIL
  • 2016-08-30 17:41:03
  • 1299

面试——数据结构与算法

分类: 数据结构与算法(14) 作者同类文章X 面试(5) 作者同类文章X 1、快速排序: 2、哈夫曼树: 哈夫曼...
  • qq_35114086
  • qq_35114086
  • 2016-11-24 13:02:56
  • 442

Java实现面试六个算法

查找算法 典型的二分查找 对于二分查找算法要求, 查找前的数据必须是已经排好序的, 然后得到数组的开始位置start和结束位置end, 取中间位置mid的数据a[mid]跟待查找数据key...
  • yuexianchang
  • yuexianchang
  • 2017-07-30 09:52:19
  • 1736

算法工程师面试

算法工程师面试必备 成为算法工程师,应该学习哪些东西 首先说算法工程师有几个方向:NLP,推荐,CV,深度学习,然后结合公司业务做得内容各不相同 传统机器学习算法:感知机,SVM,LR...
  • u010398562
  • u010398562
  • 2017-09-17 13:59:18
  • 1191

C++ 经典算法 面试绝杀

1.链表逆序 2.链表合并 3.一棵树是否某条路径结点之和等于给定值。并描述算法复杂度 4.你熟悉的排序算法并描述算法复杂度。          快速排序          归并排序   ...
  • duan_jin_hui
  • duan_jin_hui
  • 2017-04-11 16:17:06
  • 573

面试遇到了算法题?看这篇就够啦。

原文地址:github.com/kdn251/interviews译文出自:掘金翻译计划译者:王下邀月熊校对者:PhxNirvana、根号三这个 链接 用来查看本翻译与英文版是否有差别(如果你没有看到...
  • wulixiaoxiao1
  • wulixiaoxiao1
  • 2017-03-17 09:40:06
  • 1097

剑指Offer面试算法题Java实现

刷了第一遍剑指Offer,用Java实现,收获很大。
  • weixin_36273478
  • weixin_36273478
  • 2017-02-23 21:59:00
  • 625

玩转算法面试-面试分析

面试准备:算法: 算法思路 算法素质 思考方向(方式) 算法优秀不代表技术优秀(算法只是技术的一部分) 算法考虑问题全面 对问题的理解深入 对问题的独到见解:优化,代码规范,容错性 技术: 参与项...
  • qq_33936481
  • qq_33936481
  • 2017-06-30 14:16:58
  • 1419

编程之法:面试和算法心得 清晰完整版

  • 2016年11月09日 22:39
  • 6.53MB
  • 下载
收藏助手
不良信息举报
您举报文章:面试算法
举报原因:
原因补充:

(最多只允许输入30个字)