Trình tự tăng dần
Một chuỗi đang tăng nghiêm ngặt nếu và chỉ khi arr [0]
Chúng tôi được yêu cầu viết một hàm JavaScript lấy hai mảng số, arr1 và arr2 làm đối số thứ nhất và thứ hai tương ứng.
Chúng ta có thể hoán đổi bất kỳ số lượng phần tử nào từ arr1 sang arr2, chúng sẽ tồn tại trên cùng một chỉ số. Nó có nghĩa là chúng ta có thể hoán đổi arr1 [i] với arr2 [i]. Hàm của chúng ta sẽ trả về số lượng hoán đổi tối thiểu để làm cho cả hai chuỗi ngày càng tăng nghiêm ngặt.
Ví dụ:nếu đầu vào của hàm là
Đầu vào
Đầu ra
Giải thích đầu ra
Bởi vì nếu chúng ta hoán đổi arr1 [3] với arr2 [3], thì cả hai mảng sẽ tăng dần.
Sau đây là mã - Vấn đề
const arr1 = [1, 3, 5, 4];
const arr2 = [1, 2, 3, 7];
const output = 1;
Ví dụ
const arr1 = [1, 3, 5, 4];
const arr2 = [1, 2, 3, 7];
const findSwaps = (arr1 = [], arr2 = []) => {
let map = {
true: 1,
false: 0,
};
for (let i = 1; i < arr1.length; i++) {
const current = {
true: Infinity,
false: Infinity,
}
if (arr1[i] > arr2[i - 1] && arr2[i] > arr1[i - 1]) {
current.true = Math.min(
current.true,
map.false + 1,
)
current.false = Math.min(
current.false,
map.true)
}
if (arr2[i] > arr2[i - 1] && arr1[i] > arr1[i - 1]) {
current.true = Math.min(
current.true,
map.true + 1,
)
current.false = Math.min(
current.false,
map.false)
}
map = current
}
return Math.min(
map.false,
map.true)
}
console.log(findSwaps(arr1, arr2));
Đầu ra
1