js实现数组中任意两个数之和是否为某个数的和

用任意一种语言实现一个函数,判断一个给定整数数组中是否存在某两个元素之和恰好等于一个给定值 k,存在则返回 true,否则返回 false。该函数的输入参数有两个,第一个参数为整数数组 nums,第二个参数为整数 k,返回值为布尔值

function foo(nums, k) {
     // 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(foo([2, 4, 1, 8, 5, 3, 11], 0));
   console.log(foo([2, 4, 1, 8, 5, 3, 11], 2));
   console.log(foo([2, 4, 1, 8, 5, 3, 11], 3));
   console.log(foo([2, 4, 1, 8, 5, 3, 11], 13));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
为了实现这个方法,我们可以使用层循环遍历数组中的每一个元素,并找到满足条件的个元素的下标。具体步骤如下: 1. 创建一个空字典,用于存储每个元素的值和下标。 2. 遍历组nums,对于每个元素num,执行以下操作: - 计算目标值与当前元素的差值diff:diff = target - num。 - 检查diff是否在字典中,如果存在,则说明找到了满足条件的个元素,返回它们的索引:return [字典[diff], 当前元素的下标]。 - 如果diff不在字典中,则将当前元素的值和下标添加到字典中:字典[num] = 当前元素的下标。 3. 如果遍历完整个数组都没有找到满足条件的个元素,则说明不存在这样的组合,返回一个空列表。 下面是代码的实现: ```python def find_two_sum(nums, target): num_dict = {} for i, num in enumerate(nums): diff = target - num if diff in num_dict: return [num_dict = i return [] ``` 请注意,在这个方法中,我们使用了一个字典来存储每个元素的值和下标,这样可以快速查找满足条件的个元素的下标。如果找到了满足条件的个元素,我们直接返回它们的下标。如果遍历完整个数组都没有找到满足条件的个元素,则返回一个空列表。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [js代码-给定一个整组 nums 和一个整目标值 target,请你在该数组中找出 和为目标值 的那 个 ...](https://download.csdn.net/download/weixin_38720173/20324980)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [刷题之给定一个整组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 个 整](https://blog.csdn.net/weixin_39924674/article/details/111014115)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值