首页 > 其他 > 详细

Leetcode 刷题计划

时间:2016-02-26 17:02:04      阅读:142      评论:0      收藏:0      [点我收藏+]

?

Two Sum????21.4%????Medium

给定一个数组,找到数组中的两个值,使其和为n,假定数组中一定存在这样一组解。

常规的思路是两次循环,如果了解哈希表的话,我们可以用哈希表来记录遍历过的节点,找到当前节点和(n-i)节点所在的位置即可。这样可以在O(n)的时间复杂度里面解决这个问题。

Add Two Numbers????22.3%????Medium

大数字的加法,把两个数字都表示成链表的形式。

Longest Substring Without Repeating Characters????21.6%????Medium

由于是字符串,这样的话递归或者多次循环都会导致超时。技巧还是用hash的方法来记录遍历过的字符。

Median of Two Sorted Arrays????18.2%????Hard

从两个已经排序的数组a[m],b[n]中找到中间的数,如果m+n为偶数,则返回中间两个数的平均值,要求时间复杂度log(m+n)

如果写一个时间复杂度是o(m+n)/2 的方法,思路上就简单了,只需要实现即可。既然要求时间复杂度是log(m+n),意味着需要二分法。这道题可以转换成求第k大元素所在的位置,假设第k大元素在a[m]中的index为x,那么b[n]中的索引为k-x,我们通过二分法找x所在的位置,满足 a[x],b[k-x]中较大的一个元素同时小于a[x+1],b[k-x+1]即可。

?

?

Leetcode 刷题计划

原文:http://www.cnblogs.com/myprogram/p/5220797.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!