首页 > 试题广场 >

数据库连接池

[编程题]数据库连接池
  • 热度指数:1801 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
Web系统通常会频繁地访问数据库,如果每次访问都创建新连接,性能会很差。为了提高性能,架构师决定复用已经创建的连接。当收到请求,并且连接池中没有剩余可用的连接时,系统会创建一个新连接,当请求处理完成时该连接会被放入连接池中,供后续请求使用。

现在提供你处理请求的日志,请你分析一下连接池最多需要创建多少个连接。

输入描述:
输入包含多组数据,每组数据第一行包含一个正整数n(1≤n≤1000),表示请求的数量。

紧接着n行,每行包含一个请求编号id(A、B、C……、Z)和操作(connect或disconnect)。


输出描述:
对应每一组数据,输出连接池最多需要创建多少个连接。
示例1

输入

6
A connect
A disconnect
B connect
C connect
B disconnect
C disconnect

输出

2

python解法

使用一个列表来做,如果某个记录是connect,就加到列表中去,如果是disconnect,就把列表中对应的值删除掉。在加进去的过程中,不断判断列表的最大长度,最终返回这个最大长度即可。

while True:
    try:
        stack, maxNum = [], 0
        for _ in range(int(input())):
            left, right = input().split()
            if right == "connect":
                stack.append(left)
                maxNum = max(maxNum, len(stack))
            else:
                stack.remove(left)
        print(maxNum)
    except:
        break
发表于 2017-11-16 10:27:43 回复(0)
try:
    while 1:
        maxVal, crnVal = 0, 0
        for i in xrange(input()):
            s = raw_input().split()
            if s[1] == "disconnect":
                crnVal -= 1
            else:
                crnVal += 1
                if crnVal > maxVal:
                    maxVal = crnVal
        print maxVal
except:
    pass

发表于 2017-05-05 11:12:55 回复(0)