# 1、”美丽“数组
题目
给定一个正整数 n,要求输出 n 个不完全相同,也不是完全不相同的正整数
思路
第一个输出 2,后面的都输出 1 就行(题目要求只用给出一个满足要求的解即可)
# 2、整数拆分之后的和
题目
给定一个整数(正负都有可能),将其拆分为前后两个数,要求两个数最大的和
思路
遍历整数的每一位(即每一种拆分方法),维护最大和即可
注意
负数的特殊情况,最大和需要初始化为一个很小的负值,而不能是零
# 3、能否转换字符串
题目
给定两个字符串 s 和 t,以及一个正整数 k
定义一次转换操作为,将一个字符变成其下一位(z 变成 a)
问是否能恰好经过 k 次变换,将 s 变换为 t
思路
统计 s 中每一位变成 t 中对应位需要的次数之和
将 k 减去该和之后整除 26 即可
注意
首先 k 需要比该和大,否则减为负数也可以整除 26,但实际上次数不够用
# 4、完全平方树
题目
给定一个树,包含每个节点的值(只有 1 和 2 两种值)
同时给定节点之间的边(n 个节点则只给出 n-1 条边)
问树中存在多少条路径,其上所有点值的乘积为完全平方数
思路
深度优先搜索(DFS)
统计路径上 2 的数量(1 不影响乘积)
当 2 为偶数个时,即为完全平方数,此时路径条数+1
遍历到没有下一个节点时则回溯
# 5、V型数组
题目
给定一个数组,满足其为 n 的排列(即数组中包含 1~n 的 n 个互不重复的整数)
定义V型数组为 先递减后递增 的数组,同时全降序和全升序数组也算
问至少需要多少次交换(每次只能交换数组中相邻位置)才能将原数组变成V型数组