zoukankan      html  css  js  c++  java
  • 35. 判断和等于给定整数的两个数是否存在

    一. 问题

    给定一个整数 c 和一个下标从 1 到 n 的数组 A,A 中的元素是范围 1 到 5n(可能有重复)的 n 个整数。描述一个有效算法来确定 A 中是否存在两个整数 A[ i ] 和 A[ j ] ,其和为 c,即 c = A[ i ] + A[ j ], 1 ≤ i < j ≤ n。算法的运行时间是多少?

    二. 思路

    用简洁的话重新表述一下问题:在序列是否存在两个数,它们的和等于给定的整数,若存在,返回 true,不存在,返回 false。

    我们考虑暴力解法,先固定一个数,然后依次查找另外一个数,判断这两个数的和是否等于给定整数。这样遍历序列找出结果,时间复杂度为 O(n2)。

    三. 代码实现

     1 bool is_two_num_exist(const vector<int>& data, int sum) {
     2     for (int i = 0; i < data.size(); ++i) {
     3         for (int j = i + 1; j < data.size(); ++j) {
     4             if ((data[i] + data[j]) == sum) {
     5                 return true;
     6             }
     7         }
     8     }
     9 
    10     return false;
    11 }

    显然,该暴力解法并不是最好的方法。算法的时间复杂度并不好看,还需优化。

  • 相关阅读:
    Java IO 5 : 对象序列化
    Java IO 4 : RandomAccessFile
    3 Linux平台安装jenkins
    AWS-EC2配置swap
    2.8 环境准备-静态资源服务器搭建
    2.7 环境准备-MongoDB
    2.6 环境准备-redis
    2.5 环境准备-zookeeper
    2.4 环境准备-mysql8
    2.3 环境准备-nexus
  • 原文地址:https://www.cnblogs.com/Hello-Nolan/p/13556416.html
Copyright © 2011-2022 走看看