java--尋找峰值

題目:
峰值元素是指其值大于左右相鄰值的元素。
給定一個(gè)輸入數(shù)組 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。
數(shù)組可能包含多個(gè)峰值,在這種情況下,返回任何一個(gè)峰值所在位置即可。
你可以假設(shè) nums[-1] = nums[n] = -∞。

示例 1:
輸入: nums = [1,2,3,1]
輸出: 2
解釋: 3 是峰值元素,你的函數(shù)應(yīng)該返回其索引 2。

示例 2:
輸入: nums = [1,2,1,3,5,6,4]
輸出: 1 或 5
解釋: 你的函數(shù)可以返回索引 1,其峰值元素為 2; 或者返回索引 5, 其峰值元素為 6。
思路:
典型的二分查找過(guò)程,只需把nums[mid]和nums[mid+1]比較,如果前者小于后者,那么在mid處曲線呈升勢(shì),mid的右面一定有峰值,往右面查找。如果后者小于前者,則在mid處曲線呈將勢(shì),mid或mid左邊一定有峰值,往左面查找。

 private static int findTopValue(int[] nums) {
        if (nums == null || nums.length <= 0) {
            return 0;
        }
        int left = 0;
        int right = nums.length - 1;
        while (left < right) {
            int mid = (right - left) / 2 + left;
            if (nums[mid] < nums[mid+1]) {
                left = mid + 1;
            } else {
                right = mid;
            }
        }
        return left;
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 題目描述:峰值元素是指其值大于左右相鄰值的元素。給你一個(gè)輸入數(shù)組 nums,找到峰值元素并返回其索引。數(shù)組可能包含...
    華子的學(xué)習(xí)之路閱讀 383評(píng)論 0 0
  • 162. 尋找峰值[https://leetcode-cn.com/problems/find-peak-elem...
    itbird01閱讀 661評(píng)論 0 1
  • 峰值元素是指其值大于左右相鄰值的元素。 給定一個(gè)輸入數(shù)組 nums,其中 nums[i] ≠ nums[i+1],...
    Antrn閱讀 129評(píng)論 0 1
  • 162. 尋找峰值 描述 峰值元素是指其值大于左右相鄰值的元素。 給定一個(gè)輸入數(shù)組 nums,其中 nums[i]...
    GoMomi閱讀 596評(píng)論 0 0
  • 來(lái)源:力扣(LeetCode)鏈接:https://leetcode-cn.com/problems/find-p...
    xialu閱讀 67評(píng)論 0 1

友情鏈接更多精彩內(nèi)容