前言/背景
本人本身就喜欢写一些算法题,算法运行成功的时候,很有成就感。其实参加这个竞赛也没有指望拿很好的名次,只是想看看自己跟大神们的差距有多大。
大赛简介
总共三道编程题,时间限制2个小时。
参赛流程
活动时间:9月8日-26日(竞赛时间截止9.18)
竞赛考试时间:9月18日 8:30-11:00(作答时间2小时)
获奖名单公布:9月23日,在本页面公布获奖名单链接
获奖用户信息收集:9月27日
奖品发放:9月30日后7个工作日内
参赛经历
其实上个月就报过名了,但是时间给错过了。这次我特地设了闹钟。
解题思路
1、题目名称:严查枪火 X国最近开始严管枪火。 像是“ak”,“m4a1”,“skr”。都是明令禁止的。 现在小Q查获了一批违禁物品其中部分是枪支。 小Q想知道自己需要按照私藏枪火来关押多少人。 (只有以上三种枪被视为违法)
这道题其实非常的简单,只要对输入进行遍历,然后找出等于“ak”,“m4a1”,“skr”的个数就行了
public static int solution(int n, ArrayList<String> vector){ int result = 0; for(int i=0;i<vector.size();i++){ if(vector.get(i).equals("ak") || vector.get(i).equals("m4a1") || vector.get(i).equals("skr") ){ result++; } } return result; }
2、题目名称:鬼画符门 鬼画符门,每年都会统计自己宗门鬼画符消耗的数量,往年一直是大师兄管理, 但是这次鬼艺接手了, 你能帮鬼艺写一个 程序统计每年消耗数量最多的鬼画符吗?
这道题是使用键值对,将所有鬼画符作为键,个数作为值,然后求出最大值的鬼画符。
public static String solution(int n, ArrayList<String> vector){ int result = 0; Map<String,Integer> map = new HashMap<>(); for(int i=0;i<n;i++){ String s = vector.get(i); if(map.containsKey(s)){ map.put(s,map.get(s)+1); }else{ map.put(s,1); } }; List<Map.Entry<String,Integer>> list = new ArrayList<>(map.entrySet()); list.sort((a,b)->{ if(a.getValue()>b.getValue()){ return -1; }else{ return 1; } }); return list.get(0).getKey(); }
3、题目名称:收件邮箱 已知字符串str,str表示邮箱的不标准格式。 其中”.”会被记录成”dot”,”@”记录成”at”。 写一个程序将str转化成可用 的邮箱格式。(可用格式中字符串中除了开头结尾所有”dot”,都会被转换,”at”只会被转化一次,开头结尾的不转化)
这道题我使用了分割字符串的方法
public static String solution(String str){ String result = "" + str.charAt(0); // TODO: 请在此编写代码 for(int i=1;i<str.length();i++){ if(i<str.length()-3 && str.substring(i,i+3).equals("dot")){ result = result+"."; i = i+2; }else if(!result.contains("@") && str.substring(i,i+2).equals("at")){ result = result+"@"; i = i+1; }else{ result = result + str.charAt(i); } } return result; }
4、题目名称:最长递增的区间长度 给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3
public static int solution(int n, ArrayList<Integer> arr){ int result = 0; // TODO: 请在此编写代码 int x = 1; List<Integer> list = new ArrayList<>(); for(int i=1;i<n;i++){ if(arr.get(i)>=arr.get(i-1)){ x++; if(i==n-1){ list.add(x); } }else{ list.add(x); x=1; } } Collections.sort(list); result = list.size()==0 ? 1 : list.get(list.size()-1); return result; }
经验心得
遇到题不要慌,要耐心读题,谨慎思考。可以从多方位考虑问题。条条大路通罗马,总有解决问题的办法
BUG 邂逅
在提交代码的时候遇到非常糟心的事就是代码老是串!