【CSDN竞赛第六期】难得AK,一看排行,大家居然都是满分?

CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16

前言/背景

这应该是我第四次参加了吧,第四期的时候拿过一次奖励,那次是排第三名,拿了一等奖。

之前也发过一篇分享的文章,然后拿到奖励之后也发了一篇动态。

有一说一,高级背包还是很不错的,上面口袋贼多,还有一个充电口,用来放充电宝的那种
但是那件衣服就稍微有点丑了,穿起来还是挺舒服的,好像是纯棉的,就是印花的效果很一般,看上去有点丑哈哈哈哈哈哈。

【CSDN竞赛第六期】难得AK,一看排行,大家居然都是满分?_第1张图片

大赛简介

比赛规则就是在两个小时内解决四道算法题,分数高且时间短者获胜。

奖励的话,每期都不一样,第六期的奖励看下面的图吧:
【CSDN竞赛第六期】难得AK,一看排行,大家居然都是满分?_第2张图片

参赛流程

每隔两周会有一期,到目前已经举办六期了,只需要提前报名就可以参赛,非常方便也非常简单。

参赛经历

这次比赛的题目我是真没想到的。

写的时候就感觉题目挺简单的,中间有题卡了一下,我想着这就对了,不可能这么简单的嘛,肯定有点难度的撒。

结果后面发现是我想多了,题目确实很简单。

我写了一个小时,AK了,想着我这次怎么着也能进个前30拿个奖吧,结果出来一看
请添加图片描述
我的妈呀,全是AK!

于是我排在了第六十多名。。。。
【CSDN竞赛第六期】难得AK,一看排行,大家居然都是满分?_第3张图片

解题思路

得了,这题目比较简单,我就直接贴代码啦,大家看代码就可以很容易理解的。

第一题

X国最近开始严管枪火。 像是“ak”,“m4a1”,“skr”。都是明令禁止的。 现在小Q查获了一批违禁物品其中部分是枪支。

小Q想知道自己需要按照私藏枪火来关押多少人。 (只有以上三种枪被视为违法)

public static int solution(int n, ArrayList<String> list){
	int result = 0;
	for (String str : list) {
		if ( str.equals("ak") || str.equals("m4a1") || str.equals("skr") )
		result++;
	}
	return result;
}

第二题

鬼画符门,每年都会统计自己宗门鬼画符消耗的数量,往年一直是大师兄管理, 但是这次鬼艺接手了, 你能帮鬼艺写一个程序统计每年消耗数量最多的鬼画符吗?

public static String solution(int n, ArrayList<String> list){
	HashMap<String, Integer> map = new HashMap<>(n);
	for( String str : list ) {
		if (map.containsKey(str)) {
			map.put(str, map.get(str) + 1);
		} else {
			map.put(str, 1);
		}
	}
	int max = 0;
	String result = "";
	for ( Map.Entry<String, Integer> entry : map.entrySet() ) {
		if ( entry.getValue() > max ) {
			max = entry.getValue();
			result = entry.getKey();
		}
	}
	return result;
}

第三题

已知字符串str,str表示邮箱的不标准格式。 其中”.”会被记录成”dot”,”@”记录成”at”。 写一个程序将str转化成可用的邮箱格式。(可用格式中字符串中除了开头结尾所有”dot”,都会被转换,”at”只会被转化一次,开头结尾的不转化)

public static String solution(String str){
	String result = "";
	str = str.replace("dot", ".");
	if (str.charAt(0) == '.') {
		str = "dot" + str.substring(1);
	}
	if (str.charAt(str.length() - 1) == '.') {
		str = str.substring(0, str.length() - 1) + "dot";
	}
	int index = str.indexOf("at",1);
	str = str.substring(0, index) + "@" + str.substring(index + 2);
	return str;
}

第四题

给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3。

public static int solution(int n, ArrayList<Integer> arr){
	int result = 0;
	int max = 1, now = 1;
	for (int i = 1; i < arr.size() ;i++) {
		if (arr.get(i) > arr.get(i - 1)) {
			now++;
			max = Math.max(max, now);
		} else {
			now = 1;
		}
	}
	return max;
}

经验心得

这次比赛让我明白了,做题的时候不要想太多,另外就是速度一定要快,尽可能快的把题解出来,不要去慢慢悠悠的写。

其实工作也是这样的,我们在工作的时候就应该迅速的、细心的去做,而不是拖拖拉拉,应当要提升自己的效率!

资料分享

给大家推荐刷题网站:力扣和牛客都很不错,还有acwing,百度搜都能搜到的。

你可能感兴趣的:(刷题,数据结构,算法,java)