国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

javascript - python small algorithm
曾經(jīng)蠟筆沒有小新
曾經(jīng)蠟筆沒有小新 2017-06-15 09:21:43
0
3
1254

There is a list of date strings, as follows:


lst = ['2017-06-01', '2017-06-08', '2017-06-15', '2017-06-22', '2017-06-29', ...]

Seeking s = ['2017-06-09']Which date string between and lst is most similar

Idea 1: Convert the values ????of s and lst into dates, traverse and compare the difference in seconds, and the smallest one is the date string you are looking for.

Is there a better way to achieve this? ?

曾經(jīng)蠟筆沒有小新
曾經(jīng)蠟筆沒有小新

reply all(3)
typecho

I will give you an idea for your reference
lst.append(s)
lst.sort()
num=lst.index(s)
Then compare lst[num-1] and lst[num+1] The smaller number of seconds difference is the result, so there is no need to traverse and calculate the timestamp.
If you think it’s good, please give it to Zanga and adopt it.

漂亮男人

Convert the date into an integer by removing -, and then subtract the dates in s respectively. The number with the smallest absolute value is the closest date.


# Python code
lst = ['2017-06-01', '2017-06-08', '2017-06-15', '2017-06-22', '2017-06-29']
s = ['2017-06-09']
date = [''.join(x.split('-')) for x in lst]
datetoint = [int(x) for x in date]
gaps = [abs(x - int(''.join(s[0].split('-')))) for x in datetoint]
mostrecentdate = lst[gaps.index(min(gaps))]
print(mostrecentdate)
伊謝爾倫

I feel that lz means not to traverse lst. Whether it is sort or subtraction, traversal actually occurs
I should use the dichotomy method. This is probably what it means

i = 0
j = len(list)
while True:
    index = (i + j) / 2
    if s > lst[index]:
        i = index
    else:
        j = index
    continue

Just read it as pseudo code, that’s what it means anyway, this way the number of traversals is the least.

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template