摘要:我們要找出這個目標數字在數組中的存在區間,并以數組形式返回這個區間。要求題目必須在輸入數組和目標值返回想法我們需要分別找出最左邊的這個元素的位置和最右邊的這個元素的位置。由于對于時間的要求,我們在進行查找的時候要采取二分查找。
題目詳情
Given an array of integers sorted in ascending order, 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].題目的意思是,輸入一個升序排列的整數數組和一個目標值。我們要找出這個目標數字在數組中的存在區間,并以數組形式返回這個區間。如果這個數字不存在于數組之中,則返回{-1.-1}。要求題目必須在O(logn)
For example,
輸入數組[5, 7, 7, 8, 8, 10]和目標值8,
返回[3, 4].
我們需要分別找出最左邊的這個元素的位置、和最右邊的這個元素的位置。
由于對于時間的要求,我們在進行查找的時候要采取二分查找。
需要注意的是,對于尋找左邊界的時候,如果nums[i]等于target值,也要將mid賦值為高位指針high,以找到最左邊的等于target的元素。
解法public int[] searchRange(int[] nums, int target) { int[] res = {-1,-1}; int leftIndex = findIndex(nums,target,true); if(leftIndex == nums.length || nums[leftIndex] != target){ return res; } res[0] = leftIndex; res[1] = findIndex(nums,target,false)-1; return res; } public int findIndex(int[] nums,int target,boolean left){ int low = 0; int high = nums.length; while(low < high){ int mid = (low + high)/2; if(nums[mid] > target ||(left && target == nums[mid])){ high = mid; }else{ low = mid +1; } } return low; }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68489.html
摘要:題目要求即在一個有序排列的數組中,找到目標值所在的起始下標和結束下標。這樣一定可以找到目標值的初始下標同理,結合情況和情況,當中間值大于目標值,則將右指針左移至中間,否則將左指針右移至中間,這樣一定可以找到目標值的結束下標。 題目要求 Given an array of integers sorted in ascending order, find the starting and ...
摘要:二分搜索復雜度時間空間思路其實就是執行兩次二分搜索,一次專門找左邊邊界,一次找右邊邊界。如果找右邊邊界,則要判斷右邊一位的數是否相同。 Search for a Range Given a sorted array of integers, find the starting and ending position of a given target value. Your algo...
摘要:前言從開始寫相關的博客到現在也蠻多篇了。而且當時也沒有按順序寫現在翻起來覺得蠻亂的。可能大家看著也非常不方便。所以在這里做個索引嘻嘻。順序整理更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新 前言 從開始寫leetcode相關的博客到現在也蠻多篇了。而且當時也沒有按順序寫~現在翻起來覺得蠻亂的。可能大家看著也非常不方便。所以在這里做個索引嘻嘻。 順序整理 1~50 1...
摘要:首先,建立二元結果數組,起點,終點。二分法求左邊界當中點小于,移向中點,否則移向中點先判斷起點,再判斷終點是否等于,如果是,賦值給。 Problem Given a sorted array of n integers, find the starting and ending position of a given target value. If the target is not...
摘要:如果目標值不存在于數組中,返回它將會被按順序插入的位置。因此需要關注這些測試用例,在單機上逐個測試成功后再提交。因為題目中只要求返回索引,并不要求插到數組中,所以應該說又簡化了一些,是一道簡單題目。爭取在下一篇給出優化解法。 「 Leetcode刷題 」系列,僅為刷題過程中對于算法和編程的思考與記錄,如果對你有幫助歡迎點贊收藏。博主也在探索刷題過程中,記錄的一些知識點可能很小白,因此主...
閱讀 2175·2021-09-22 10:56
閱讀 1477·2021-09-07 10:11
閱讀 1805·2019-08-30 15:54
閱讀 2295·2019-08-30 15:44
閱讀 2313·2019-08-29 12:40
閱讀 3037·2019-08-28 18:25
閱讀 1742·2019-08-26 10:24
閱讀 3191·2019-08-23 18:39