时间空间复杂度都是O(N)

在转动过的有序数组中寻找目标值

http://www.nowcoder.com/questionTerminal/7cd13986c79d4d3a8d928d490db5d707

我的空间复杂度是O(N) 没有用到转动的特点

import java.util.*;
public class Solution {
    /**
     * 
     * @param A int整型一维数组 
     * @param target int整型 
     * @return int整型
     */
    public int search (int[] A, int target) {
        // write code here
        // 如果先存储元素+下标,再改成有序的,取到目标值之后去哈希表找到对应的下标返回即可
        Map<Integer,Integer> map = new HashMap<>();
        for(int i = 0; i < A.length; i++){
            map.put(A[i],i);
        }
        Arrays.sort(A);
        int left = 0;
        int right = A.length-1;// 这里注意已经提示不存在重复值
        while(left <= right){
            int mid = left + (right - left)/2;
            if(A[mid] == target) return map.get(A[mid]);
            if(A[mid] > target) right = mid-1;
            if(A[mid] < target) left = mid+1;
        }
        return -1;
    }
}
全部评论
今天的面试到此结束
6 回复 分享
发布于 2021-01-04 20:48
面试官:“给你个机会,在最短的时间内让我记住你”
点赞 回复 分享
发布于 2021-03-18 15:39
回去等通知吧
点赞 回复 分享
发布于 2021-03-06 01:58
为什么不直接在数组中矮个找呢,也是O(n)的复杂度,还不额外占用空间。肯定没这么简单的。
点赞 回复 分享
发布于 2021-03-01 21:11
后面的有点多余。直接用map.get查找,没有则返回-1就行了
点赞 回复 分享
发布于 2020-12-28 13:02

相关推荐

运营3年修炼中接简历辅导:你的科研项目经历里,只写了你的动作,没有写你的思考和成果,不要只写使用什么进行了什么,这等于罗列你的任务,简历是为了突出你的优秀,你在什么样的任务背景下,克服了什么样的困难,针对性地做了哪些事情,最后达成了什么成果(用数据体现你的成果和效率)
点赞 评论 收藏
分享
ResourceUtilization:四六级不愧是大学最有用的证之一
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务