Swift-寻找满足条件的两个数

题目:快速找出一个数组中的两个数字,使两个数字之和为一个特定的值。假设数组中至少存在一组符合要求的解。
常规解法是遍历两次数组,时间复杂度为O(N²),为了更快找到的两个符合条件的数,可以先通过数组有序,从前后两个方向遍历数组,求解结果.
核心代码:
<pre><code>` func sumNumber(arr:[Int],sum:Int)->(Int,Int) {
var i:Int = 0
var j:Int = arr.count - 1

    while i < j {
        if arr[i] + arr[j] < sum {
            i += 1
        } else if arr[i] + arr[j] > sum {
            j -= 1
        } else {
            return (i,j)
        }
    }
    return (-1,-1)
}`</code></pre>

测试代码:
<pre><code>var sumArr:[Int] = [100,5,6,8,3,7,9,10,0,40,1,2] find.quickSort(arr: &sumArr, low: 0, high: sumArr.count - 1) var sumResult4:(Int,Int) = find.sumNumber(arr: sumArr, sum: 10) print("FlyElephant---\(sumResult4)")</code></pre>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,769评论 0 33
  • 53.计算字符 在字符串中获取字符值的数量, 可以使用字符串字符属性中的计数属性: let unusualMena...
    无沣阅读 1,134评论 0 4
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,270评论 0 4
  • 夫妻关系,其实是一种既常见又特别的关系。 常见的是,大多数人到了一定年龄都会结婚,组建家庭。 特别的是,毫不相干的...
    海星_love阅读 151评论 0 0
  • 夏树苍翠时,少年扬旗归
    星球大眼怪阅读 161评论 0 0