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;
    	}
    
  • 相关阅读:
    leftpad填充函数;
    overfllow的解析
    append与after
    数组扁平话的N种解法;
    关于webapi调用wcf并发假死的分析
    C#金额数字转换中文繁体
    关于ios的IDFA
    Windows下为MySQL做定时备份
    [System.OutOfMemoryException] {函数求值已禁用,因为出现内存不足异常。
    mvc 捕获404和500 等
  • 原文地址:https://www.cnblogs.com/tonyluis/p/4486499.html
Copyright © 2011-2022 走看看