{"id":8137,"date":"2025-07-22T10:51:18","date_gmt":"2025-07-22T05:21:18","guid":{"rendered":"https:\/\/namastedev.com\/blog\/?p=8137"},"modified":"2025-07-22T21:29:00","modified_gmt":"2025-07-22T15:59:00","slug":"find-peak-element","status":"publish","type":"post","link":"https:\/\/namastedev.com\/blog\/find-peak-element\/","title":{"rendered":"Find Peak Element"},"content":{"rendered":"\n<!-- Prism.js CSS and JS -->\n<link href=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/themes\/prism-tomorrow.css\" rel=\"stylesheet\" \/>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/prism.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/prismjs@1.29.0\/plugins\/autoloader\/prism-autoloader.min.js\"><\/script>\n\n<style>\n  .wp_blog_code-tabs-container {\n    font-family: \"Segoe UI\", sans-serif !important;\n    max-width: 900px !important;\n    margin: 2rem auto !important;\n    border: 1px solid #ddd !important;\n    border-radius: 8px !important;\n    overflow: hidden !important;\n    background-color: white !important;\n  }\n\n  .wp_blog_code-tabs-header {\n    background: #f7f7f7 !important;\n    display: flex !important;\n    border-bottom: 1px solid #ddd !important;\n  }\n\n  .wp_blog_code-tab-button {\n    flex: 1 !important;\n    padding: 10px 15px !important;\n    border: none !important;\n    background: transparent !important;\n    cursor: pointer !important;\n    font-weight: bold !important;\n    transition: background 0.2s !important;\n    color: #242b33 !important;\n  }\n\n  .wp_blog_code-tab-button.active {\n    background: white !important;\n    border-bottom: 3px solid #0073aa !important;\n  }\n\n  .wp_blog_code-tab-content {\n    display: none !important;\n    padding: 20px !important;\n    background: #242b33 !important;\n  }\n\n  .wp_blog_code-tab-content > pre {\n    background: #242b33 !important;\n  }\n\n  .wp_blog_code-tab-content.active {\n    display: block !important;\n  }\n\n  .wp_blog_code-tab-content pre {\n    margin: 0 !important;\n    overflow-x: auto !important;\n  }\n\n  .wp_blog_explanation {\n    max-width: 900px !important;\n    margin: 2rem auto !important;\n    font-family: \"Segoe UI\", sans-serif !important;\n    line-height: 1.6 !important;\n    background: white !important;\n    color: black !important;\n    padding: 1rem !important;\n    border-radius: 8px !important;\n  }\n\n  .wp_blog_explanation h2 {\n    color: #0073aa !important;\n    font-size: 1.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .wp_blog_explanation code {\n    background: #f1f1f1 !important;\n    padding: 2px 6px !important;\n    border-radius: 4px !important;\n    font-family: monospace !important;\n  }\n\n  .wp_blog_explanation h1,\n  .wp_blog_explanation h2,\n  .wp_blog_explanation h3,\n  .wp_blog_explanation h4,\n  .wp_blog_explanation h5,\n  .wp_blog_explanation h6,\n  .wp_blog_explanation p {\n    margin-top: 10px !important;\n    margin-bottom: 10px !important;\n  }\n<\/style>\n\n<div class=\"wp_blog_explanation\">\n  <p>This problem involves finding any **peak element** in an array. A peak element is an element that is strictly greater than its neighbors. The array is unsorted, but there\u2019s guaranteed to be at least one peak.<\/p>\n\n  <h2>Steps<\/h2>\n  <ul>\n    <li>We use binary search to find a peak efficiently.<\/li>\n    <li>Initialize <code>l = 0<\/code> and <code>r = arr.length - 1<\/code>.<\/li>\n    <li>While <code>l &lt; r<\/code>:\n      <ul>\n        <li>Find middle: <code>m = l + floor((r - l) \/ 2)<\/code><\/li>\n        <li>If <code>arr[m] &lt; arr[m + 1]<\/code> \u2192 we are in ascending slope \u2192 shift <code>l = m + 1<\/code><\/li>\n        <li>Else \u2192 we are in descending slope or peak \u2192 move <code>r = m<\/code><\/li>\n      <\/ul>\n    <\/li>\n    <li>Loop ends when <code>l == r<\/code>, that\u2019s the index of a peak.<\/li>\n  <\/ul>\n\n  <h2>Dry Run<\/h2>\n  <p><strong>Input:<\/strong> <code>[12, 3, 1]<\/code><\/p>\n  <ol>\n    <li>m = 1 \u2192 3 &lt; 1 \u2192 r = 1<\/li>\n    <li>m = 0 \u2192 12 &gt; 3 \u2192 r = 0<\/li>\n    <li>l == r == 0 \u2192 return 0<\/li>\n  <\/ol>\n  <p><strong>Output:<\/strong> <code>0<\/code> (12 is a peak)<\/p>\n\n  <p><strong>Input:<\/strong> <code>[1,2,1,3,5,6,4]<\/code><\/p>\n  <p>There are multiple peaks possible, e.g. index 1 (2), 5 (6)<\/p>\n  <p><strong>Output:<\/strong> <code>5<\/code> (or any valid peak index)<\/p>\n\n  <h2>Time &#038; Space Complexity<\/h2>\n  <ul>\n    <li><strong>Time Complexity:<\/strong> O(log\u202fn) \u2014 binary search used<\/li>\n    <li><strong>Space Complexity:<\/strong> O(1)<\/li>\n  <\/ul>\n<\/div>\n\n<div class=\"wp_blog_code-tabs-container\">\n  <div class=\"wp_blog_code-tabs-header\">\n    <button class=\"wp_blog_code-tab-button active\" data-lang=\"js\">JavaScript<\/button>\n    <button class=\"wp_blog_code-tab-button\" data-lang=\"cpp\">C++<\/button>\n    <button class=\"wp_blog_code-tab-button\" data-lang=\"c\">C<\/button>\n    <button class=\"wp_blog_code-tab-button\" data-lang=\"java\">Java<\/button>\n    <button class=\"wp_blog_code-tab-button\" data-lang=\"py\">Python<\/button>\n    <button class=\"wp_blog_code-tab-button\" data-lang=\"c#\">C#<\/button>\n  <\/div>\n\n  <div class=\"wp_blog_code-tab-content active\" data-lang=\"js\">\n    <pre><code class=\"language-javascript\">\nvar findPeakElement = function(arr) {\n    let l = 0;\n    let r = arr.length - 1;\n    while (l < r) {\n        let m = l + Math.floor((r - l) \/ 2);\n        if (arr[m] < arr[m + 1]) {\n            l = m + 1;\n        } else {\n            r = m;\n        }\n    }\n    return l;\n};\n    <\/code><\/pre>\n  <\/div>\n\n  <div class=\"wp_blog_code-tab-content\" data-lang=\"cpp\">\n    <pre><code class=\"language-cpp\">\nint findPeakElement(vector<int>& arr) {\n    int l = 0, r = arr.size() - 1;\n    while (l < r) {\n        int m = l + (r - l) \/ 2;\n        if (arr[m] < arr[m + 1]) l = m + 1;\n        else r = m;\n    }\n    return l;\n}\n    <\/code><\/pre>\n  <\/div>\n\n  <div class=\"wp_blog_code-tab-content\" data-lang=\"c\">\n    <pre><code class=\"language-c\">\nint findPeakElement(int* arr, int arrSize) {\n    int l = 0, r = arrSize - 1;\n    while (l < r) {\n        int m = l + (r - l) \/ 2;\n        if (arr[m] < arr[m + 1]) l = m + 1;\n        else r = m;\n    }\n    return l;\n}\n    <\/code><\/pre>\n  <\/div>\n\n  <div class=\"wp_blog_code-tab-content\" data-lang=\"java\">\n    <pre><code class=\"language-java\">\npublic class Solution {\n    public int findPeakElement(int[] arr) {\n        int l = 0, r = arr.length - 1;\n        while (l < r) {\n            int m = l + (r - l) \/ 2;\n            if (arr[m] < arr[m + 1]) l = m + 1;\n            else r = m;\n        }\n        return l;\n    }\n}\n    <\/code><\/pre>\n  <\/div>\n\n  <div class=\"wp_blog_code-tab-content\" data-lang=\"py\">\n    <pre><code class=\"language-python\">\ndef findPeakElement(arr):\n    l, r = 0, len(arr) - 1\n    while l < r:\n        m = l + (r - l) \/\/ 2\n        if arr[m] < arr[m + 1]:\n            l = m + 1\n        else:\n            r = m\n    return l\n    <\/code><\/pre>\n  <\/div>\n\n  <div class=\"wp_blog_code-tab-content\" data-lang=\"c#\">\n    <pre><code class=\"language-c#\">\npublic class Solution {\n    public int FindPeakElement(int[] arr) {\n        int l = 0, r = arr.Length - 1;\n        while (l < r) {\n            int m = l + (r - l) \/ 2;\n            if (arr[m] < arr[m + 1]) l = m + 1;\n            else r = m;\n        }\n        return l;\n    }\n}\n    <\/code><\/pre>\n  <\/div>\n<\/div>\n\n\n\n<a href=\"https:\/\/leetcode.com\/problems\/find-peak-element\/description\/\" target=\"blank\">Solve this problem.<\/a>\n<script>\n  document.addEventListener(\"DOMContentLoaded\", function () {\n    const buttons = document.querySelectorAll(\".wp_blog_code-tab-button\");\n    const contents = document.querySelectorAll(\".wp_blog_code-tab-content\");\n\n    buttons.forEach((button) => {\n      button.addEventListener(\"click\", () => {\n        const lang = button.getAttribute(\"data-lang\");\n\n        buttons.forEach((btn) => btn.classList.remove(\"active\"));\n        button.classList.add(\"active\");\n\n        contents.forEach((content) => {\n          content.classList.toggle(\"active\", content.getAttribute(\"data-lang\") === lang);\n        });\n      });\n    });\n  });\n<\/script>\n\n\n","protected":false},"excerpt":{"rendered":"<p>This problem involves finding any **peak element** in an array. A peak element is an element that is strictly greater than its neighbors. The array is unsorted, but there\u2019s guaranteed to be at least one peak. Steps We use binary search to find a peak efficiently. Initialize l = 0 and r = arr.length &#8211;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[322,176,175,211,174,172,173],"tags":[],"class_list":["post-8137","post","type-post","status-publish","format-standard","category-algorithms-and-data-structures","category-csharp","category-cplusplus","category-data-structures","category-java","category-javascript","category-python"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/8137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/comments?post=8137"}],"version-history":[{"count":1,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/8137\/revisions"}],"predecessor-version":[{"id":8138,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/8137\/revisions\/8138"}],"wp:attachment":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/media?parent=8137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/categories?post=8137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/tags?post=8137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}