时间空间复杂度都是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

相关推荐

04-13 18:10
门头沟学院 Java
想熬夜的小飞象在秋招:被腾讯挂了后爸妈以为我失联了
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务