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

  • 相关阅读:
    微信跳一跳Python辅助无需配置一键操作
    人工智能三:机器学习、人工智能学习自学资料路线计划
    mysql安装配置、主从复制配置详解
    kafka安装使用配置1.1
    azkaban安装步骤
    flume安装
    zookeeper知识
    zookeeper安装
    mysql语法难点
    mysql安装
  • 原文地址:https://www.cnblogs.com/jun881821/p/13151526.html
Copyright © 2011-2022 走看看