Skip to content

Latest commit

 

History

History
36 lines (31 loc) · 957 Bytes

0852.山脉数组的峰顶索引.md

File metadata and controls

36 lines (31 loc) · 957 Bytes

解题关键点

  • 本周的主题是二分查找吗?

代码

impl Solution {
    pub fn peak_index_in_mountain_array(arr: Vec<i32>) -> i32 {
        let mut left = 0;
        let mut right = arr.len() + 1;
        while left < right {
            let mid = (left + right) / 2;
            if arr[mid - 1] < arr[mid] && arr[mid + 1] < arr[mid] {
                return mid as i32;
            }
            if arr[mid - 1] > arr[mid] {
                right = mid + 1;
            } else if arr[mid + 1] > arr[mid] {
                left = mid;
            }
        }
        0
    }
}

测试用例

assert_eq!(peak_index_in_mountain_array(vec![0,1,0]), 1);
assert_eq!(peak_index_in_mountain_array(vec![0,2,1,0]), 1);
assert_eq!(peak_index_in_mountain_array(vec![0,10,5,2]), 1);
assert_eq!(peak_index_in_mountain_array(vec![3,4,5,1]), 2);
assert_eq!(peak_index_in_mountain_array(vec![24,69,100,99,79,78,67,36,26,19]), 2);