{"id":6130,"date":"2025-07-22T21:57:33","date_gmt":"2025-07-22T16:27:33","guid":{"rendered":"https:\/\/namastedev.com\/blog\/?p=6130"},"modified":"2025-07-22T21:57:34","modified_gmt":"2025-07-22T16:27:34","slug":"find-the-second-largest-element-in-an-array","status":"publish","type":"post","link":"https:\/\/namastedev.com\/blog\/find-the-second-largest-element-in-an-array\/","title":{"rendered":"Find the second largest element in an array"},"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.wp_blog_code-tabs-header {\n  background: #f7f7f7 !important;\n  display: flex !important;\n  border-bottom: 1px solid #ddd !important;\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.wp_blog_code-tab-button.active {\n  background: white !important;\n  border-bottom: 3px solid #0073aa !important;\n}\n.wp_blog_code-tab-content {\n  display: none !important;\n  padding: 20px !important;\n  background: #242B33 !important;\n}\n.wp_blog_code-tab-content > pre {\n  background: #242B33 !important;\n}\n.wp_blog_code-tab-content.active {\n  display: block !important;\n}\n.wp_blog_code-tab-content pre {\n  margin: 0 !important;\n  overflow-x: auto !important;\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.wp_blog_explanation h2 {\n  color: #0073aa !important;\n  font-size: 1.5rem !important;\n  margin-bottom: 0.5rem !important;\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.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  <h2>Problem Statement<\/h2>\n  <p>Write a function secondLargest(arr) that takes an array of numbers and returns the second largest unique number in the array.<\/p>\n  <h2>Approach<\/h2>\n  <ul>\n    <li>Check array length:\n      <ul><li>If the array contains fewer than 2 elements, return &#8220;Array should have at least two numbers&#8221;.<\/li><\/ul>\n    <\/li>\n    <li>Initialize two variables:\n      <ul>\n        <li>firstLargest as the smallest possible value (e.g., -\u221e or Integer.MIN_VALUE).<\/li>\n        <li>secondLargest as the smallest possible value.<\/li>\n      <\/ul>\n    <\/li>\n    <li>Iterate through the array:\n      <ul>\n        <li>For each element <code>num<\/code>:\n          <ul>\n            <li>If <code>num<\/code> is greater than <code>firstLargest<\/code>:\n              <ul>\n                <li>Update <code>secondLargest<\/code> to <code>firstLargest<\/code>.<\/li>\n                <li>Update <code>firstLargest<\/code> to <code>num<\/code>.<\/li>\n              <\/ul>\n            <\/li>\n            <li>Else if <code>num<\/code> is greater than <code>secondLargest<\/code> and not equal to <code>firstLargest<\/code>:\n              <ul><li>Update <code>secondLargest<\/code> to <code>num<\/code>.<\/li><\/ul>\n            <\/li>\n          <\/ul>\n        <\/li>\n      <\/ul>\n    <\/li>\n    <li>Result:\n      <ul><li>Return <code>secondLargest<\/code> (even if it is <code>-Infinity<\/code>).<\/li><\/ul>\n    <\/li>\n  <\/ul>\n  <h2>Constraints<\/h2>\n  <li>Time Complexity: O(n)<\/li>\n  <li>Space Complexity: O(1)<\/li>\n  <h2>Examples<\/h2>\n  <ul>\n    <li><strong>Input:<\/strong> [0, 3, 5, 2, 7, 9] <br><strong>Output:<\/strong> 7<\/li>\n    <li><strong>Input:<\/strong> [5] <br><strong>Output:<\/strong> Array should have at least two numbers<\/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  <\/div>\n\n  <div class=\"wp_blog_code-tab-content active\" data-lang=\"js\">\n    <pre><code class=\"language-javascript\">function secondLargest(arr) {\n  if (arr.length < 2) {\n    return \"Array should have at least two numbers\";\n  }\n  let firstLargest = -Infinity;\n  let secondLargest = -Infinity;\n  for (let i = 0; i < arr.length; i++) {\n    if (arr[i] > firstLargest) {\n      secondLargest = firstLargest;\n      firstLargest = arr[i];\n    } else if (arr[i] > secondLargest && arr[i] != firstLargest) {\n      secondLargest = arr[i];\n    }\n  }\n  return secondLargest;\n}\nlet arr = [0, 3, 5, 2, 7, 9];\nconsole.log(secondLargest(arr));<\/code><\/pre>\n  <\/div>\n\n  <div class=\"wp_blog_code-tab-content\" data-lang=\"cpp\">\n    <pre><code class=\"language-cpp\">#include &lt;iostream&gt;\n#include &lt;climits&gt;\nusing namespace std;\n\nstring secondLargest(int arr[], int n) {\n  if (n < 2) return \"Array should have at least two numbers\";\n\n  int firstLargest = INT_MIN, secondLargest = INT_MIN;\n\n  for (int i = 0; i < n; i++) {\n    if (arr[i] > firstLargest) {\n      secondLargest = firstLargest;\n      firstLargest = arr[i];\n    } else if (arr[i] > secondLargest && arr[i] != firstLargest) {\n      secondLargest = arr[i];\n    }\n  }\n\n  if (secondLargest == INT_MIN) return \"No second largest found\";\n  return to_string(secondLargest);\n}\n\nint main() {\n  int arr[] = {0, 3, 5, 2, 7, 9};\n  int n = sizeof(arr) \/ sizeof(arr[0]);\n  cout &lt;&lt; secondLargest(arr, n) &lt;&lt; endl;\n  return 0;\n}<\/code><\/pre>\n  <\/div>\n\n  <div class=\"wp_blog_code-tab-content\" data-lang=\"c\">\n    <pre><code class=\"language-c\">#include &lt;stdio.h&gt;\n#include &lt;limits.h&gt;\n\nconst char* secondLargest(int arr[], int n, int *secondLargest) {\n  if (n < 2) return \"Array should have at least two numbers\";\n\n  int firstLargest = INT_MIN;\n  *secondLargest = INT_MIN;\n\n  for (int i = 0; i < n; i++) {\n    if (arr[i] > firstLargest) {\n      *secondLargest = firstLargest;\n      firstLargest = arr[i];\n    } else if (arr[i] > *secondLargest && arr[i] != firstLargest) {\n      *secondLargest = arr[i];\n    }\n  }\n\n  if (*secondLargest == INT_MIN) return \"No second largest found\";\n  return NULL;\n}\n\nint main() {\n  int arr[] = {0, 3, 5, 2, 7, 9};\n  int n = sizeof(arr) \/ sizeof(arr[0]);\n  int second;\n  const char* msg = secondLargest(arr, n, &second);\n  if (msg) printf(\"%s\\n\", msg);\n  else printf(\"%d\\n\", second);\n  return 0;\n}<\/code><\/pre>\n  <\/div>\n\n  <div class=\"wp_blog_code-tab-content\" data-lang=\"java\">\n    <pre><code class=\"language-java\">public class SecondLargest {\n  public static String secondLargest(int[] arr) {\n    if (arr.length < 2) return \"Array should have at least two numbers\";\n\n    int firstLargest = Integer.MIN_VALUE;\n    int secondLargest = Integer.MIN_VALUE;\n\n    for (int num : arr) {\n      if (num > firstLargest) {\n        secondLargest = firstLargest;\n        firstLargest = num;\n      } else if (num > secondLargest && num != firstLargest) {\n        secondLargest = num;\n      }\n    }\n\n    if (secondLargest == Integer.MIN_VALUE) return \"No second largest found\";\n    return String.valueOf(secondLargest);\n  }\n\n  public static void main(String[] args) {\n    int[] arr = {0, 3, 5, 2, 7, 9};\n    System.out.println(secondLargest(arr));\n  }\n}<\/code><\/pre>\n  <\/div>\n\n  <div class=\"wp_blog_code-tab-content\" data-lang=\"py\">\n    <pre><code class=\"language-python\">def second_largest(arr):\n  if len(arr) < 2:\n    return \"Array should have at least two numbers\"\n  first = second = float('-inf')\n  for num in arr:\n    if num > first:\n      second = first\n      first = num\n    elif num > second and num != first:\n      second = num\n  return second\n\narr = [0, 3, 5, 2, 7, 9]\nprint(second_largest(arr))<\/code><\/pre>\n  <\/div>\n<\/div>\n\n<script>\ndocument.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      buttons.forEach(btn => btn.classList.remove('active'));\n      button.classList.add('active');\n      contents.forEach(content => {\n        content.classList.toggle('active', content.getAttribute('data-lang') === lang);\n      });\n    });\n  });\n});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Problem Statement Write a function secondLargest(arr) that takes an array of numbers and returns the second largest unique number in the array. Approach Check array length: If the array contains fewer than 2 elements, return &#8220;Array should have at least two numbers&#8221;. Initialize two variables: firstLargest as the smallest possible value (e.g., -\u221e or Integer.MIN_VALUE).<\/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":[176,175,811,810,174,172,173],"tags":[],"class_list":{"0":"post-6130","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-csharp","7":"category-cplusplus","8":"category-data-structures-and-algorithms","9":"category-dsa","10":"category-java","11":"category-javascript","12":"category-python"},"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/6130","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=6130"}],"version-history":[{"count":2,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/6130\/revisions"}],"predecessor-version":[{"id":6133,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/posts\/6130\/revisions\/6133"}],"wp:attachment":[{"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/media?parent=6130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/categories?post=6130"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/namastedev.com\/blog\/wp-json\/wp\/v2\/tags?post=6130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}