前段时间因为身体原因以及在准备找实习,没有怎么参加各种竞赛。在找完实习后,身体慢慢也恢复了。打算 come back csdn竞赛。也再次得到了csdn的竞赛奖项。大概分享下本次获奖的经历吧。
这也是第二次获得CSDN的编程竞赛奖项了,总体来讲题目还是比较经典的题型。经典题解会有大佬发出来,我就大概简单分享一下有我自己的解题思路的题目。
订班服
题目描述
小A班级订班服了! 可是小A是个小糊涂鬼,整错了好多人的衣服的大小。 小A只能自己掏钱包来补钱了。 小A想知道自己至少需要买多少件衣服。
解体思路
这题的输入用例,就是提供了 需要订的服装尺码 和 已经订的服装尺码。
进行两次遍历,第一次大概可以使用一个 map 来记录已经订尺码及数量。key 尺码,value 为数量
第二次则遍历时,优先在 原有的 map 中扣减,如果原有的 map 获取后为 0。则将 count++;
返回即可。
零钱兑换
题目描述
给定数组arr,arr中所有的值都为正整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个aim,代表要找的钱数,求组成aim的最少货币数。 如果无解,请返回-1. 数据范围:数组大小满足 0 <= n<=10000 , 数组中每个数字都满足 0 < val <=10000,0 <= aim <=100000 要求:时间复杂度 O(n×aim) ,空间复杂度 O(aim)。
解题思路
这题其实也是经典题型,但是这个输入用例当时让我有点懵😥(不知道是给错了还是啥的)
输入用例是一个字符串,我们需要先转化为一个 数组和一个 Int。
这里可以使用 lastIndex()、 substring() 和 spit() 方法来进行处理。
最终得到一个数组和 int 类型的和之后,就可以正常操作了。也是一个动态规划题目。
小艺照镜子
总之就是求一个最长回文串。这题还是觉得用中心扩散法是比较好的,主要注意回文串长度是奇数或者偶数,这两种情况都要考虑。