blob: eba11fd3b3759d17ca353fb6f444f3432cb64328 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
//
// Exercise:
// You are given an array @A containing distinct integers.
// Write a script to find all leader elements in the array @A.
// Print (0) if none found. An element is leader if it is greater
// than all the elements to its right side.
//
//
// Note:
// - The only way no leader element can be found is if the array is empty.
// - We will read the array from STDIN.
//
//
// Read a line from STDIN, turn it into a string, strip off the
// trailing newline (and any leading or trailing whitespace),
// and then split in on spaces. Store the result into an array "arry".
//
let fs = require ("fs");
let line = fs . readFileSync (0) . toString () . trim ();
let arry = line . split (" ");
if (line . length == 0) {
//
// Special case, if the line is empty, output 0
//
console . log (0);
}
else {
//
// Iterate backwards over the array. Keep track of the largest
// element so far in an array 'out'. If we find a new largest
// element, put this first in 'out' (so, the largest element
// seen so far is always in 'out [0]'.
//
let out = [arry [arry . length - 1]];
for (let i = arry . length - 2; i >= 0; i --) {
//
// Note that we have strings in arry (and hence, out).
// An unary + casts them to numbers.
//
if (+arry [i] > +out [0]) {
out . unshift (arry [i]);
}
}
//
// Print the result.
//
console . log (out . join (" "));
}
|