# findSecondLargest

// pseudo code
[-2, -3, 0]
let max = -Infinity
let max2 = -Infinity

for(i from 0 to n-1)
    if(nums[i] > max){ max = nums[i], max2 = max}
    else if(nums[i] > max2) {max2 = nums[i]}
// Problem 2 - Find second largest within O(n) complexity.
function findSecondLargest(sequence) {
  // Write your algorithm here with O(n) time complexity.
  if(!Array.isArray(sequence)) return 'Not an Array'
  if(sequence.length < 2) return 'Can not find'
  if(typeof sequence[0] !== "number") return 'Can not find'

  let largest = sequence[0];
  let secondLargest = -Infinity;

  for(let i=1; i<sequence.length; i++){
    // 若出現不是數字的值那拋出錯誤
    if (typeof sequence[i] !== "number") return 'Can not find'

    if(sequence[i] > largest){
      secondLargest = largest
      largest = sequence[i]
    } else if(sequence[i] < largest && sequence[i] > secondLargest){
      secondLargest = sequence[i]
    }
  }

  // eg. [3, 3, 3, 3, 3]
  if(secondLargest === -Infinity) return 'Can not find'

  return secondLargest;
}

Last updated

Was this helpful?