zoukankan      html  css  js  c++  java
  • Java for LeetCode 034 Search for a Range

    Given a sorted array of integers, find the starting and ending position of a given target value.

    Your algorithm's runtime complexity must be in the order of O(log n).

    If the target is not found in the array, return [-1, -1].

    For example,
    Given [5, 7, 7, 8, 8, 10] and target value 8,
    return [3, 4].

    解题思路:

    看到O(log n) 几乎可以肯定是二分查找的思路,题目不是特别难的那种,仔细想想就想出来了,JAVA实现如下:

    	static public int[] searchRange(int[] nums, int target) {
    		int[] result = new int[2];
    		result[0] = result[1] = -1;
    		int left = 0, right = nums.length - 1;
    		while (left <= right) {
    			if (nums[(left + right) / 2] > target)
    				right = (left + right) / 2 - 1;
    			else if (nums[(left + right) / 2] < target)
    				left = (left + right) / 2 + 1;
    			else {
    				result[0] = result[1] = (left + right) / 2;
    				while (target != nums[left]) {
    					if (target > nums[(result[0] + left) / 2])
    						left = (result[0] + left) / 2 + 1;
    					else {
    						result[0] = (result[0] + left) / 2;
    						left++;
    					}
    				}
    				result[0] = left;
    				while (target != nums[right]) {
    					if (target < nums[(result[1] + right) / 2])
    						right = (result[1] + right) / 2 - 1;
    					else {
    						result[1] = (result[1] + right) / 2;
    						right--;
    					}
    				}
    				result[1] = right;
    				break;
    			}
    		}
    		return result;
    	}
    
  • 相关阅读:
    container宽度
    NO.14 两个div并排,左边为绝对宽度,右边为相对宽度
    CSS3旋转图片效果收集
    背景图片问题
    CSS动画
    前端比较有用的网址
    JS如何判断IE和火狐与Chrome浏览器
    JAVA多线程面试题目
    JAVA多线程之Semaphore
    阿里多线程笔试题
  • 原文地址:https://www.cnblogs.com/tonyluis/p/4486499.html
Copyright © 2011-2022 走看看