CVTE一面手写代码题

题目:在有序的数组里找到和为S的两个数。
我一开始是写了O(n2)的方法,面试官说要怎么优化,那时候讲了一下,面试官问复杂度多少,我说O(logN),面完发现自己讲错了,觉得应该是第一个数是遍历数组,第二个数用二分查找,所以复杂度应该是O(NlogN),不知道大家还有没有更优的方法?
全部评论
双指针
点赞 回复 分享
发布于 2018-03-14 22:27
用hash应该可以O(n)
4 回复 分享
发布于 2018-03-14 22:28
这是道比较经典的题目了,这也是leetcode167题,请利用有序的数组这个条件,使用双索引比较好,参考如下 class Solution {     public int[] twoSum(int[] numbers, int target) {         int left=0;         int right=numbers.length-1;         while(left<right){             if(numbers[left]+numbers[right]==target)                 break;                            if(numbers[left]+numbers[right]>target)                 right--;             if(numbers[left]+numbers[right]<target)                 left++;         }         return new int[] {left,right};     } }
点赞 回复 分享
发布于 2018-03-14 22:36
有序数组,所以可以一个指针指向数组头,一个指向尾。如果两个指针的和大于S,尾部指针--,和小于S,头部指针++。 另外,请问楼主面的应届还是实习啊
点赞 回复 分享
发布于 2018-03-14 22:33
hash 
点赞 回复 分享
发布于 2018-03-17 19:56
双指针,复杂度n
点赞 回复 分享
发布于 2018-03-17 17:00
刚看到 剑指offer原题 双指针 再问一句,老哥 18,19?
点赞 回复 分享
发布于 2018-03-17 10:05
楼主cvte出结果了吗?
点赞 回复 分享
发布于 2018-03-17 08:47
双指针啊,offer原题
点赞 回复 分享
发布于 2018-03-15 16:02
夹逼
点赞 回复 分享
发布于 2018-03-15 01:12
这不是剑指offer原题吗……
点赞 回复 分享
发布于 2018-03-15 00:08
头尾逼近吧,o(n),不过我投了web后台,笔试都没过。
点赞 回复 分享
发布于 2018-03-14 23:44
2sum, 估计本来想问完你,还打算问3sum 4sum 。 把leetcode上面对应的题都刷一下就明白了。
点赞 回复 分享
发布于 2018-03-14 23:15
我也被问了这题。。我用双指针解出来了。。然而还是挂了。。整个面试就感觉linkhashmap没答出来,其他还好啊
点赞 回复 分享
发布于 2018-03-14 22:55
hashmap
点赞 回复 分享
发布于 2018-03-14 22:37
和笔试一样的题
点赞 回复 分享
发布于 2018-03-14 22:36

相关推荐

09-19 12:15
门头沟学院 Java
迷茫的大四🐶:这下是真的打牌了,我可以用感谢信和佬一起打牌吗
点赞 评论 收藏
分享
迷茫的大四🐶:哇靠,哥们,啥认证啊,副总裁实习,这么有实力嘛
一起聊美团
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务