在 JavaScript 中使用運算子產生所需結果
問題
我們需要編寫一個 JavaScript 函式,該函式的第一個引數是包含正好 4 個數字的陣列 arr,第二個引數是目標值 target。
我們的函式需要判斷陣列 arr 中的數字是否可以透過運算子 *、/、+、-、(、) 運算得到等於目標值 target 的值。
例如,如果輸入函式的引數是
輸入
const arr = [5, 3, 2, 1]; const target = 4;
輸出
const output = true;
輸出說明
因為我們可以透過以下方式獲得 4
(5 - 1) * (3 - 2) = 4
示例
程式碼如下:
const arr = [5, 3, 2, 1];
const target = 4;
const canOperate = (arr = [], target = 1) => {
const isValid = x => Math.abs(x - target) < 0.0000001
const helper = (arr = []) => {
if (arr.length === 1) {
return isValid(arr[0])
}
let valid = false
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
const nextArr = arr.filter((x, index) => index !== i && index !== j)
valid = valid || helper([...nextArr, arr[i] + arr[j]])
|| helper([...nextArr, arr[i] - arr[j]])
|| helper([...nextArr, arr[j] - arr[i]])
|| helper([...nextArr, arr[i] * arr[j]])
|| helper([...nextArr, arr[i] / arr[j]])
|| helper([...nextArr, arr[j] / arr[i]])
}
}
return valid
}
return helper(arr)
}
console.log(canOperate(arr, target));輸出
true
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
JavaScript
PHP