34 搜尋範圍

2021-08-19 04:48:55 字數 852 閱讀 2166

給定乙個按照公升序排列的整數陣列nums,和乙個目標值target。找出給定目標值在陣列中的開始位置和結束位置。

你的演算法時間複雜度必須是 o(log n) 級別。

如果陣列中不存在目標值,返回[-1, -1]

示例 1:

輸入: nums = [5,7,7,8,8,10], target = 8

輸出: [3,4]

示例 2:

輸入: nums = [5,7,7,8,8,10], target = 6

輸出: [-1,-1]

思路:兩次二分查詢,分別找出左右邊界。

左邊界點滿足(nums[flagl-1]右邊界點滿足(nums[flagr+1]>target ||  flagr==nums.size()-1) && nums[flagr]==target

class solution ;

while (l<=r)

if (nums[mid] >= target) r = mid - 1;

if (nums[mid] < target) l = mid + 1;

} l = 0, r = nums.size() - 1;

while (l<=r)

if (nums[mid] > target) r = mid - 1;

if (nums[mid] <= target) l = mid + 1;

} return vector;

}};

LeetCode34搜尋範圍

給定乙個已經公升序排序的整形陣列,找出給定目標值的開始位置和結束位置。你的演算法時間複雜度必須是 o log n 級別。如果在陣列中找不到目標,返回 1,1 例如 給出 5,7,7,8,8,10 和目標值 8,返回 3,4 自己寫的第一種方法就是普通二分查詢,找到target數字之後,分別向前向後遍...

LeetCode(34) 搜尋範圍

medium!題目描述 給定乙個按照公升序排列的整數陣列nums,和乙個目標值target。找出給定目標值在陣列中的開始位置和結束位置。你的演算法時間複雜度必須是 o log n 級別。如果陣列中不存在目標值,返回 1,1 示例 1 輸入 nums 5,7,7,8,8,10 target 8 輸出 ...

Lucene 搜尋方法(範圍搜尋)

在某些情況下,使用者需要查詢一定範圍內的文件,比如時間,id等。package com.querytype import org.apache.lucene.index.term import org.apache.lucene.search.booleanclause import org.apa...