Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Xây dựng số lớn nhất từ mảng trong JavaScript

Chúng ta cần viết một hàm JavaScript nhận vào một mảng số làm đối số đầu tiên và duy nhất.

Hàm nên nối các số trong mảng sao cho tạo thành số lớn nhất có thể từ tập số cho trước.

Ví dụ:

Nếu mảng đầu vào là:

const arr = [5, 45, 34, 9, 3];

Thì đầu ra nên là:

const output = '9545343';

Ví dụ

Dưới đây là mã nguồn:

const arr = [5, 45, 34, 9, 3]; const largestNumber = (arr = []) => {    if(arr.every( n => n === 0)){       return '0';    }    arr.sort((a, b) => {       const s1 = new String(a);       const s2 = new String(b);       const first = s1 + s2;       const second = s2 + s1;       if(first > second){          return -1;       }else if(first < second){          return 1;       };       return 0;    });    return arr.join(''); }; console.log(largestNumber(arr));

Kết quả

Đầu ra trên console:

9545343

Giải thích: So sánh custom: a trước b nếu ab > ba (string concat). Ví dụ: 9 > 5 vì "95" > "59". 45 > 34 vì "4534" > "3445". Edge case: all zeros → "0". Đây là bài toán "Largest Number" (LeetCode 179).