> 文章列表 > 【Java版oj】day37数据库连接池、mkdir

【Java版oj】day37数据库连接池、mkdir

【Java版oj】day37数据库连接池、mkdir

目录

 一、数据连接池

(1)原题再现

(2)问题分析

(3)完整代码

 二、mkdir

(1)原题再现

(2)问题分析

(3)完整代码


 一、数据库连接池

(1)原题再现

数据库连接池__牛客网

        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

(2)问题分析

        贪心算法,走一步看一步,如果是connect就+1,如果不是就-1,每一步都判断最大的connect数是多少。

(3)完整代码

import java.util.*;/ 数据库连接池*/
public class Main{public static void main(String[] args) {Scanner sc=new Scanner(System.in);while(sc.hasNext()) {int num=sc.nextInt();String []id=new String[num];String []op=new String[num];for(int i=0;i<num;i++) {id[i]=sc.next();op[i]=sc.next();}int max=Integer.MIN_VALUE;int count=0;for(int i=0;i<num;i++) {if("connect".equals(op[i])) {count++;}else {count--;}max=Math.max(max,count);}System.out.println(max);}sc.close();}
}

 二、mkdir

(1)原题再现

mkdir__牛客网

        工作中,每当要部署一台新机器的时候,就意味着有一堆目录需要创建。例如要创建目录“/usr/local/bin”,就需要此次创建“/usr”、“/usr/local”以及“/usr/local/bin”。好在,Linux下mkdir提供了强大的“-p”选项,只要一条命令“mkdir -p /usr/local/bin”就能自动创建需要的上级目录。
        现在给你一些需要创建的文件夹目录,请你帮忙生成相应的“mkdir -p”命令。

 

输入描述:

输入包含多组数据。 每组数据第一行为一个正整数n(1≤n≤1024)。 紧接着n行,每行包含一个待创建的目录名,目录名仅由数字和字母组成,长度不超过200个字符。

 

输出描述:

对应每一组数据,输出相应的、按照字典顺序排序的“mkdir -p”命令。 每组数据之后输出一个空行作为分隔。

示例1

输入

3

/a

/a/b

/a/b/c

3

/usr/local/bin

/usr/bin

/usr/local/share/bin

输出

mkdir -p /a/b/c

mkdir -p /usr/bin

mkdir -p /usr/local/bin

mkdir -p /usr/local/share/bin

 

(2)问题分析

        用Arrays.sort()方法可以直接把字符串按字典排序,一开始我的想法就是看前面的字符串在后面的能不能找到,能找到就把它设置一个特定的字符串。好像牛客给定的测试样例有点问题。

(3)完整代码

import java.util.Arrays;
import java.util.Scanner;/ mkdir*/
public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);while(sc.hasNext()) {int num=sc.nextInt();String []dir=new String[num];for(int i=0;i<num;i++) {dir[i]=sc.next();}Arrays.sort(dir);
//			for(int i=0;i<num;i++) {
//				for(int j=1+i;j<num;j++) {
//					if(dir[j].contains(dir[i])) {
//						dir[i]="not";
//					}
//				}
//			}for(int i=1;i<num;i++) {if(dir[i].contains(dir[i-1]) && dir[i].charAt(dir[i-1].length()) == '/'){dir[i-1]="not";//这样牛客才能过,但是牛客的测试样例有问题}}for(int i=0;i<num;i++) {if("not".equals(dir[i])) {continue;}System.out.println("mkdir -p "+dir[i]);}System.out.println();}}
}

​​


real silver jewelry