leetcode-二分查找:Find Peak Element

题目介绍

峰值元素值该元素大于它的邻居元素,数组中的元素满足num[i]!=num[i+1],找到峰值元素的索引,并返回之。数组中可能包括多个峰值,只要找到其中一个即可。例如数组[1,2,3,1]的峰值元素为3,所以返回的索引为2

解体思路

  • i = 0, j=数组长度,如果nums[mid]

实现代码

/************************************************************************* > File Name: bisearch.cpp > Author: ma6174 > Mail: [email protected] > Created Time: 2015年07月13日 星期一 10时47分30秒 ************************************************************************/

#include<iostream>
#include<math.h>
#include<stdlib.h>
#include<stdio.h>
#include<vector>
#include<string>
using namespace std;
//162
int findPeakElement(vector<int>& nums)
{
    int i = 0;
    int j = (int)nums.size() - 1;
    while(i <= j)
    {
        int mid = (i + j) / 2;
        if(nums[mid] < nums[mid + 1])
            i = mid + 1;
        else if(nums[mid] < nums[mid - 1])
            j = mid - 1;
        else if((nums[mid] > nums[mid + 1]) && (nums[mid] > nums[mid - 1]))
            return mid;

    }
    return i;
}
int main(int arvc, char** argv)
{
    int in = atoi(argv[1]);
    //162
    vector<int> r;
    r.push_back(1); r.push_back(2); r.push_back(1); r.push_back(1);r.push_back(2); r.push_back(3); r.push_back(4);r.push_back(1);
    int i = findPeakElement(r);
    printf("peak is %d\n", i);
    return 0;
}

你可能感兴趣的:(LeetCode)