码迷,mamicode.com
首页 > 编程语言 > 详细

实现一个函数, // 判断一个给定整数数组中是否存在某两个元素之和恰好等于一个给定值 k, // 存在则返回 true,否则返回 false。

时间:2020-06-17 13:11:34      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:return   boto   letter   play   sdn   none   判断   not   aci   

实现一个函数,判断一个给定整数数组中是否存在某两个元素之和恰好等于一个给定值 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

实现一个函数, // 判断一个给定整数数组中是否存在某两个元素之和恰好等于一个给定值 k, // 存在则返回 true,否则返回 false。

标签:return   boto   letter   play   sdn   none   判断   not   aci   

原文地址:https://www.cnblogs.com/jun881821/p/13151526.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!