欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

迅雷2018算法工程师-编程题-python

程序员文章站 2024-03-16 14:08:58
...

1. 用x,y表示一个整数范围区间,现在输入一组这样的范围区间(用空格隔开),请输出这些区间的合并。

输入描述:

一行整数,多个区间用空格隔开。区间的逗号是英文字符。

输出描述:

合并后的区间,用过空格隔开,行末无空格

迅雷2018算法工程师-编程题-python

'''
1.首先按照x元素排序,把第一个区间存入res
2.从第二个开始遍历:
如果当前区间与res[-1]无重叠,直接将当前区间append到res
如果有重叠,将res[-1]的end值更新为max(res[-1]的end值,当前区间end值)
'''
ss = input().split()
ss = [i.split(',') for i in ss]
s=[]
for i in range(len(ss)):
    s.append(list(map(int,ss[i])))
s.sort()
res = [s[0]]
for i in range(1,len(s[1:])+1):
    if s[i][0]<=res[-1][1]:
        res[-1][1] = max(s[i][1],res[-1][1])
    else:
        res.append(s[i])
res = [','.join([str(j) for j in i]) for i in res]
res = ' '.join(res)
print(res)

2. 输入一个有符号整数,输出该整数的反转值,如:

输入1:123456,输出1:654321;

输入2:-123456,输出2:-654321

# 先判断是否是负数,然后利用字符串反转。
a=input()
if a[0]=='-':
    b = '-'+a[1:][::-1]
else:
    b = a[::-1]
print(int(b))

3. 给定整数n,取若干个1到n的整数可求和等于整数m,编程求出所有组合的个数。比如当n=6,m=8时,有四种组合:[2,6], [3,5], [1,2,5], [1,3,4]。限定n和m小于120 

输入描述:

整数n和m

输出描述:

求和等于m的所有组合的个数。

输入例子1:

6 8

输出例子1:

4

超时,代码的复杂度有点高,通过率是60%。

# 递归,含n,与不含n
def getCount(n,m):
    if n<1 or m<1:
        return 0
    sum=0
    if m<n:
        n=m
    if m==n:
        sum=sum+1
    sum=sum+getCount(n-1,m)
    sum=sum+getCount(n-1,m-n)
    return sum

n,m=list(map(int,input().split()))
print(getCount(n,m))