# 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?