zoukankan      html  css  js  c++  java
  • 求数组两个数的和的索引

    做了一道题, 有一个有序数组a,包含n个元素[a1,a2,...,aN],找出相加等于x的两个数的下标

    我看到这道题,第一个想法是,这两个数肯定不止一样的,不管它要求是返回一个就行还是返回所有,我都返回所有。我用python语言实现,借鉴二分查找法,复杂度nlogn,不知道有没大神有更好的解法,我只能做到这了。代码如下:

    __author__ = 'weixin'
    #-*- coding:utf-8 -*-
    def findAdd(list,num):
        length = len(list)
        indexList = []
        for index,value in enumerate(list):
            start = index
            end = length
            while start<end:
                mid = int((start+end)/2)
                if list[mid]+value < num:
                    start = mid+1
                else:
                    end = mid
            if list[start] + value == num and (start != index):
                indexList.append((start,index))
        return indexList
    
    #测试代码
    list = [1,2,2,3,4,5,6,7,8]
    print findAdd(list,7)
    
    执行结果
    [(6, 0), (5, 1), (5, 2), (4, 3)] 正确
    

      

  • 相关阅读:
    vuebase----3.slot插槽
    vuebase-2.Props的验证组件的深入
    vuebase-1.Props的验证
    组件的加载与keep-alive
    组件传递数据props
    简单的组件
    表单和侦听器
    class和style的绑定
    每次加载更新新的背景图
    vue--计算属性
  • 原文地址:https://www.cnblogs.com/wuweixin/p/5313076.html
Copyright © 2011-2022 走看看