實現一個函數,判斷一個給定整數數組中是否存在某兩個元素之和恰好等於一個給定值 k,存在則返回 true,否則返回
false。該函數的輸入參數有兩個,第一個參數為整數數組 nums,第二個參數為整數 k,返回值為布爾值。【不要使用排序!要求時間復雜度為
O(n),n 為數組長度】
解決思路:遍歷每個元素,讓指定值減去每一個元素,得到的數字再判斷是否在數組中存在,存在返回true,否則返回false
var checkTwoSum = function (nums, k) {
if (nums.length >= 2) {
var result = "";
nums.forEach(item => {
var i = k - item;
var j = nums.indexOf(i); // 檢驗是否存在字符串 不存在返回 -1
if (j == -1) {
result = false;
} else {
result = true;
}
});
return result;
} else {
console.log("數組元素至少需要兩個");
}
}
// 測試
// console.log(checkTwoSum([2, 4, 5], 9)); // true
// console.log(checkTwoSum([2, 4, 6], 9)); // false
第二種方法,使用排序
// 1.數組的長度必須大於等於2
if (nums.length <= 1) {
return false
}
// 2.先對數組排序
nums.sort(function (a, b) {
if (a > b) {
return 1
} else if (a < b) {
return -1
} else {
return 0
}
})
// 3.
var i = 0;
var j = nums.length - 1;
while (i < j) {
// console.log(nums[i] + nums[j]);
if (nums[i] + nums[j] == k) {
return true
} else if (nums[i] + nums[j] < k) {
i++;
} else {
j--;
}
}
//4. 沒有找到返回false
return false;
};
// 測試
// console.log(checkTwoSum([2, 4, 1, 8, 5, 3, 11], 2)); // false
// console.log(checkTwoSum([2, 4, 1, 8, 5, 3, 11], 6)); // true
原文鏈接:https://blog.csdn.net/a5252145/java/article/details/105070381