题解 | #寻找峰值#

寻找峰值

https://www.nowcoder.com/practice/fcf87540c4f347bcb4cf720b5b350c76

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param nums int整型一维数组 
 * @param numsLen int nums数组长度
 * @return int整型
 */
int findPeakElement(int* nums, int numsLen ) {
    // write code here

    //抽象答案
    int left = 0;
    int right = 0;
    int mid = 0;
    if (numsLen == 1)
    {
        return 0;
    }
    else if (numsLen == 2)
    {
        return nums[0] > nums[1] ? 0 : 1;
    }
    else
    {
        while (right < numsLen)
        {
            right = left + 2;
            mid = left + 1;
            mid = (left + right) / 2;                
            if (nums[mid] > nums[left]  && nums[mid] > nums[right])
            {
                return mid;
            }
            left++;
        }
        return nums[0] > nums[numsLen-1] ? 0 : numsLen-1;
    }
    //判断左半边
    // if (numsLen % 2 == 1)
    // {
    //     while (left < right)
    //     {
    //         mid = (left + right) / 2;
    //         if (nums[mid] > (nums[left] + nums[right]))
    //         {
    //             return mid;
    //         }
    //         right = mid - 1;
    //     }
    //     left = L;
    //     right = R;
    //     while (left < right)
    //     {
    //         mid = (left + right) / 2;
    //         if (nums[mid] > (nums[left] + nums[right]))
    //         {
    //             return mid;
    //         }
    //         left = mid + 1;
    //     }
    // }
    return 0;
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务