列表补全

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zslngu/article/details/88785036
在商城的某个位置有一个商品列表,该列表是由L1、L2两个子列表拼接而成。当用户浏览并翻页时,需要从列表L1、L2中获取商品进行展示。展示规则如下:

1. 用户可以进行多次翻页,用offset表示用户在之前页面已经浏览的商品数量,比如offset为4,表示用户已经看了4个商品

2. n表示当前页面需要展示的商品数量

3. 展示商品时首先使用列表L1,如果列表L1长度不够,再从列表L2中选取商品

4. 从列表L2中补全商品时,也可能存在数量不足的情况

请根据上述规则,计算列表L1和L2中哪些商品在当前页面被展示了

对于边界情况的检查

import sys
 
def main():
    inputs = sys.stdin.readline().strip()
    if inputs == '':
        sys.exit(0)
    data = list(map(lambda x: int(x), inputs.split(' ')))
    offset = data[0]
    n = data[1]
    l1 = data[2]
    l2 = data[3]
    end = offset + n - 1
    r1 = [offset if offset < l1 else l1, l1 if end>l1 else end+1]
    r2 = [0, 0]
    if offset <= l1:
        r2[0] = 0
        r2[1] = end - l1 + 1 if (end-l1+1) > 0 else 0
        r2[1] = r2[1] if r2[1] < l2 else l2
    elif offset >= l1+l2:
        r2[0] = l2
        r2[1] = l2
    else:
        r2[0] = offset - l1
        r2[1] = end - l1 + 1
        r2[1] = r2[1] if r2[1] < l2 else l2
 
    print r1[0], r1[1], r2[0], r2[1]
 
if __name__ == '__main__':
    while True:
        main()

猜你喜欢

转载自blog.csdn.net/zslngu/article/details/88785036
今日推荐