हमें एक JavaScript फ़ंक्शन लिखना है जो पहले तर्क के रूप में संख्याओं की सरणियों की एक सरणी और दूसरे तर्क के रूप में एक संख्या लेता है। उप-सरणियों में संख्याएं बढ़ते क्रम में क्रमबद्ध होती हैं और किसी पूर्ववर्ती उप-सरणी का कोई भी तत्व किसी उत्तरवर्ती उप-सरणी के किसी भी तत्व से बड़ा नहीं होता।
फ़ंक्शन को दूसरे तर्क के रूप में प्रदान किए गए तत्व को क्रमबद्ध सरणी की सरणियों में खोजने के लिए बाइनरी खोज एल्गोरिदम का उपयोग करना चाहिए।
यदि तत्व मौजूद है तो फ़ंक्शन को true वापस करना चाहिए, अन्यथा false।
उदाहरण के लिए -
यदि इनपुट सरणी है -
const arr = [
[2, 6, 9, 11],
[13, 16, 18, 19, 21],
[24, 26, 28, 31]
];
const num = 21;
तो आउटपुट होना चाहिए -
const output = true;
उदाहरण
निम्नलिखित कोड देखें:
const arr = [
[2, 6, 9, 11],
[13, 16, 18, 19, 21],
[24, 26, 28, 31]
];
const num = 21;
const search2D = (array = [], target) => {
const h = array.length;
const w = h > 0 ? array[0].length : 0;
if (h === 0 || w === 0) { return false; }
const arr = getArr();
if (!arr) { return false; }
return binarySearch(arr, target) !== null;
function getArr() {
for (let i = 0; i < h; i++) {
let arr = array[i];
if (arr[0] <= target && target <= arr[arr.length - 1]) {
return arr;
}
}
return null;
}
function binarySearch(arr, t) {
let left = 0;
let right = arr.length - 1;
while (left <= right) {
if (arr[left] === t) { return left; }
if (arr[right] === t) { return right; }
let mid = Math.floor((left + right) / 2);
if (arr[mid] === t) { return mid; }
if (arr[mid] < t) { left = mid + 1; }
else if (arr[mid] > t) { right = mid - 1; }
}
return null;
}
};
console.log(search2D(arr, num));
आउटपुट
कंसोल आउटपुट निम्नलिखित है -
true