CSDN编程挑战赛第六期参赛心得

CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16
(请不要删掉此地址)

努力是为了让自己不平庸,你参加过哪些竞赛,有哪些收获?快来分享一下你的参赛经历吧!
内容创作方向需围绕竞赛相关,如本次竞赛的bug,对CSDN竞赛的建议,以往参加各类编程竞赛的比赛经历等等,参考如下(不强制使用示例格式,可根据自身实际经历撰写,内容贴合主题):

第一次参加竞赛,没想象中的那么难,人总是要踏出第一步的

前言/背景

参赛前看了一下前五期的结果,发现参赛人数不多,奖品还挺多的,想着自己来稍微答一答,混一个奖品什么的,即使弄不到也无所谓,不亏什么,抱着这样的心态来试一试

大赛简介

看着像是刚开始组织的,没有leetcode参赛人数那么多,但是能看出来,每一期都在进步

参赛流程

我是周内报名的

周六早上花了不到一小时答完

后面就是等公布结果

然后就是发帖,获取领奖资格

参赛经历

感觉和自己平常答得leetcode里面的简单题差不多,有一道题卡了20分钟,其他的都很快答完了,整体上来说,不是很难,差点排到30名之外了,哈哈哈,刚好30名,nice

解题思路

需要注意,在解题时,要先写解。

哈哈哈,开玩笑的,从这次出的题来讲,整体难度偏低,所以在解题时,不是很难,但是一定要细心,要注意边缘条件的判断,往往就是那些特殊的一些值,导致了测试用例跑不全的问题出现,这是要特别注意的一点

经验心得

没什么需要准备的,就注意好我上面说的那条就好了。当然,首先必须得会一门高级语言,JAVA,Python,C,C++,JavaScript,都行,还有其他的,记不起来了

资料分享

可以先去学习一下数据结构和算法相关的知识,参加比赛时就会游刃有余了

 

一、严查枪火

题目描述:

X国最近开始严管枪火。 像是“ak”,“m4a1”,“skr”。都是明令禁止的。 现在小Q查获了一批违禁物品其中部分是枪支。
小Q想知道自己需要按照私藏枪火来关押多少人。 (只有以上三种枪被视为违法)

解题思路

一个循环一个if就完了,没啥可说的

时间复杂度O(n)

空间复杂度O(1)

solution(n, vector) {
    var result = 0;
    for(let item of vector){
        if(["ak","m4a1","skr"].includes(item)) result++;
    }
    return result;
}

 

二、鬼画符门

题目描述:

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

解题思路

需要用到hash记录所有符纸的数量,最后找到最大的符纸就行了

时间复杂度O(n)

空间复杂度O(n)

solution(n, vector) {
    var result;
    let hash = {}
    let max = 1
    for(let i of vector){
        if(hash[i]) {
            hash[i]++;
            max = Math.max(max,hash[i])
        } else {
            hash[i] = 1
        }
    }
    for(let i of vector){
        if(hash[i] == max) return i
    }
    return result;
}

三、收件邮箱

题目描述:

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

解题思路

这里偷了个懒使用了字符串正则替换

我不知道正则替换该怎么计算复杂度,这里就不给出了

solution(str) {
    var result;
    result = str.replace(/^(.+?)at(.+)$/,"$1@$2")
    result = result.replace(/dot/g,".").replace(/^\.(.*)/,"dot$1").replace(/(.*)\.$/,"$1dot")
    return result;
}

四、最长递增的区间长度

题目描述:

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

解题思路

双for解君愁

时间复杂度O(n²)

空间复杂度O(1)

 

solution(n, arr) {
    var result = 1;
    for(let i=0; i<arr.length; i++){
        let count = 1;
        for(let j=i; i<arr.length; j++){
            if(arr[j]-arr[j-1]>0) count++;
            else break
        }
        result = Math.max(result,count)
    }
    return result;
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值