Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng Số nguyên làm đối số đầu tiên và duy nhất.
Sau đó, hàm sẽ lặp qua mảng và chọn số lớn nhất đó từ mảng chỉ xuất hiện một lần trong mảng. Sau đó, trả về số này và nếu không có số duy nhất trong mảng, chúng ta nên trả về -1.
Chúng tôi cũng được thông báo rằng giá trị tối đa của bất kỳ phần tử mảng nào sẽ không vượt quá 100 và sẽ lớn hơn 0 có nghĩa là -
0 < arr[i] < 101
cho tất cả i trong chỉ mục mảng.
Ví dụ -
Nếu mảng đầu vào là -
const arr = [35, 37, 33, 39, 34, 39, 38, 31];
Sau đó, đầu ra phải là -
const output = 38;
Vì các mục nhập của mảng sẽ luôn nhỏ hơn hoặc bằng 100 và lớn hơn 0, chúng ta có thể chỉ cần sử dụng một mảng có độ dài 100 để lưu trữ tần suất của mỗi số từ mảng ban đầu và sau đó duyệt ngược lại để chọn phần tử duy nhất.
Ví dụ
Mã cho điều này sẽ là -
const arr = [35, 37, 33, 39, 34, 39, 38, 31]; const pickGreatestUnique = (arr = [], bound = 100) => { const map = Array(bound).fill(0); for(let i = 0; i < arr.length; i++){ const num = arr[i]; map[num - 1]++; } for(let j = bound - 1; j >= 0; j--){ const frequency = map[j]; if(frequency === 1){ return j + 1; } } return -1; } console.log(pickGreatestUnique(arr));
Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
38