162. 寻找峰值

图片说明

  • 案例分析
    图片说明
  • 遍历
    class Solution {
      public int findPeakElement(int[] nums) {
          //nums[-1] nums[n] 是无穷  也就是说需要看nums[0] nums[n-1]
          int n =  nums.length;
          if(n==0||n==1)return 0;
          if(nums[0]>nums[1])return 0;
          if(nums[n-1]>nums[n-2])return n-1;
          for(int i = 1 ; i < n-1 ; i++) {
              if(nums[i]>nums[i-1]&&nums[i]>nums[i+1])
                  return i;
          }
          return 0;
      }
    }
  • 代码-二分 找到任意区域最大值即可
    class Solution {
        public int findPeakElement(int[] nums) {
          //nums[-1] nums[n] 是无穷  也就是说需要看nums[0] nums[n-1]
          int n =  nums.length;
          if(n==0)return 0;
          int l = 0;
          int r = n-1;
          while(l<r) {
              int mid = (l + r)/2;
              if (nums[mid] > nums[mid + 1])
                  r = mid;
              else
                  l = mid + 1;
          }
          return l;
      }
    }
全部评论

相关推荐

走不到的路就这样算了吗:大佬硬气
点赞 评论 收藏
分享
11-15 19:28
已编辑
蚌埠坦克学院 硬件开发
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务