Saturday, 20 April 2019

Day 3: Arrays :- 10 Days Of Javascript HackerRank Solution

Problem:-


Objective
In this challenge, we learn about Arrays. Check out the attached tutorial for more details.
Task
Complete the getSecondLargest function in the editor below. It has one parameter: an array, , of  numbers. The function must find and return the second largest number in .
Input Format
Locked stub code in the editor reads the following input from stdin and passes it to the function:
The first line contains an integer, , denoting the size of the  array.
The second line contains  space-separated numbers describing the elements in .
Constraints
  • , where  is the number at index .
  • The numbers in  are not distinct.
Output Format
Return the value of the second largest number in the  array.
Sample Input 0
5
2 3 6 6 5
Sample Output 0
5
Explanation 0
Given the array , we see that the largest value in the array is  and the second largest value is . Thus, we return  as our answer.

Solution:-


'use strict';

process.stdin.resume();
process.stdin.setEncoding('utf-8');

let inputString = '';
let currentLine = 0;

process.stdin.on('data', inputStdin => {
inputString += inputStdin;
});

process.stdin.on('end', _ => {
inputString = inputString.trim().split('\n').map(string => {
return string.trim();
});
main();
});

function readLine() {
return inputString[currentLine++];
}

/**
* Return the second largest number in the array.
* @param {Number[]} nums - An array of numbers.
* @return {Number} The second largest number in the array.
**/
function getSecondLargest(nums) {
let largest = nums[0];
let secondLargest = nums[0];

for (let i = 1; i < nums.length; i++) {
if (nums[i] > largest) {
secondLargest = largest;
largest = nums[i];
continue;
}

if ((nums[i] > secondLargest) && (nums[i] < largest)) {
secondLargest = nums[i];
}
}

return secondLargest;
}


function main() {
const n = +(readLine());
const nums = readLine().split(' ').map(Number);
console.log(getSecondLargest(nums));
}

4 comments:

  1. const max=Math.max(...nums);
    let secondMax=0;

    for(let i of nums){
    if(i!=max && i>secondMax){
    secondMax=i;
    }
    }
    return secondMax;

    One of the easiest way

    ReplyDelete
  2. This comment has been removed by the author.

    ReplyDelete
  3. this is optimal solution
    nums = [...new Set(nums)];
    nums = nums.sort(function(a, b) { return b - a; })[1];
    console.log(nums)
    return nums

    ReplyDelete

Error While embed the video in Your website page

Error:- Refused to display '<URL>' in a frame because it set 'X-Frame-Options' to 'sameorigin Solution:- if ...