Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm khoảng cách đến phần tử lớn hơn tiếp theo trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng số, arr, làm đối số đầu tiên và duy nhất.

Hàm của chúng ta nên xây dựng một mảng mới cho đầu vào, trong đó mỗi phần tử tương ứng là khoảng cách đến phần tử tiếp theo lớn hơn phần tử hiện tại và nếu không có phần tử nào lớn hơn ở bên phải của phần tử hiện tại, chúng ta nên đẩy 0 cho phần tử tương ứng phần tử trong mảng res và cuối cùng chúng ta nên trả về mảng này.

Ví dụ:nếu đầu vào của hàm là

Đầu vào

const arr = [12, 13, 14, 11, 16, 10, 12, 17, 19, 18];

Đầu ra

const output = [1, 1, 2, 1, 3, 1, 1, 1, 0, 0];

Giải thích đầu ra

Bởi vì phần tử lớn hơn tiếp theo của 12 là 13, 1 khối,

Tiếp theo số lớn hơn đến 13 là 14, cách 1 dãy nhà,

Tiếp theo lớn hơn đến 14 là 16, 2 dãy nhà, v.v.

Sau đây là mã -

Ví dụ

const arr = [12, 13, 14, 11, 16, 10, 12, 17, 19, 18];
const findNextGreater = (arr = []) => {
   const stack = []
   const res = new Array(arr.length).fill(0)
   for (let i = 0; i < arr.length; i++) {
      while (arr[i] > arr[stack[stack.length - 1]] && stack.length > 0) {
         const index = stack.pop()
         res[index] = i - index
      }
      stack.push(i)
   };
   return res
};
console.log(findNextGreater(arr));

Đầu ra

[1, 1, 2, 1, 3, 1, 1, 1, 0, 0]