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


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

  • 相关阅读:
    打印机无法打印文件
    .Net com组件操作excel(不建议采用Com组件操作excel)
    Zebra
    Map遍历方式
    PageHelper原理
    MySQL8.0新特性
    算法_插入排序
    贝叶斯定理
    二叉树学习笔记
    Java校验时间段重叠
  • 原文地址:https://www.cnblogs.com/jun881821/p/13151526.html
Copyright © 2020-2023  润新知