zoukankan      html  css  js  c++  java
  • 蚂蚁的笔试题目

    面试了某蚂蚁,笔试题目,没有编译器,直接白板写代码,够溜的,用了暴力破解,有点问题,没有达到最优

    题目:给你一个数组和一个数字num,找出数组中两个数a 和b,使得a+b 与 num 的差的绝对值最小。比如输入[8,3,6,1] 和13,输出8 和6。

    输入的代码:

    array1,num1=input().split(" ")
    
    array=[]
    array=array1[1:-1].split(",")
    array=list(map(int,array))
    
    num=int(num1)
    
    
    print(array)
    print(num)

    解决问题的部分,主要思路是:先把array排序,用两个指针,一个在左边,一个在右边,两个指针所指的数字之和,如果大于13,那么j--   如果小于13,那么i++

    这样的话,就可以比暴力破解更快

    array.sort()
    length=len(array)
    i=0
    j=length-1
    deta=0
    temp_min=num
    while i<j-1:
        temp_sum=array[i]+array[j]
        deta=abs(temp_sum-num)
        if deta<temp_min:
            temp_min=deta
            index_i=i
            index_j=j
            i+=1
        if deta>temp_min:
            j-=1
    print(array[i],array[j])
  • 相关阅读:
    Redis详解
    Linux常用命令
    sqlserver 游标写法
    Flask总结
    HTTPS协议
    Django REST framework 简介
    Cookie和session
    利用rest-framework编写逻辑关系
    vuex
    jQuery和Bootstrap的优点
  • 原文地址:https://www.cnblogs.com/captain-dl/p/10576819.html
Copyright © 2011-2022 走看看