360笔试
1. 选择题60分,1.5 * 40 题目比较杂有c++还有java
2. 两个编程
(1) 给定一个数组,将数组元素变为相等的最少次数,第一行输入n,第二行输入n个整数
输入9
4 7 6 4 9 3 2 3 4.
提示:
第一步,将所有的4变成9,9 7 6 9 9 3 2 3 9
第二步,将所有的3变成6,9 7 6 9 9 6 2 6 9
第三步,将所有的6变为7,9 7 7 9 9 7 2 7 9
第四步,将所有的7变成9,9 9 9 9 9 9 2 9 9
最后将2变成9
刚开始按照题目的意思写了半天,实际上并不需要,我们只需要记录出现次数最多的那个元素的元素值和出现次数,
首先将数组排序,如果当前的数和上一个数相等,我们就跳过这个数,否则我们应该通过加上某个数使得nums[i]成为之前的众数(在这里因为只需要计算操作次数,所以我们并不关心加上的那个数是多少),res++
最后输出res的值
(2) 字符串的方式
将a-z映射为1-26,那么给定一个字母组成的字符串就可以得到一个由数字组成的字符串
但是这个数字字符串可能会对应原来多个字母组成的字符串
114514,对应的字符串数量为6
简单的动态规划
dp[i] = dp[i-1]
+ dp[i-2] 如果nums[i] 可以和nums[i-1]构成一个字母
2. 两个编程
(1) 给定一个数组,将数组元素变为相等的最少次数,第一行输入n,第二行输入n个整数
输入9
4 7 6 4 9 3 2 3 4.
提示:
第一步,将所有的4变成9,9 7 6 9 9 3 2 3 9
第二步,将所有的3变成6,9 7 6 9 9 6 2 6 9
第三步,将所有的6变为7,9 7 7 9 9 7 2 7 9
第四步,将所有的7变成9,9 9 9 9 9 9 2 9 9
最后将2变成9
刚开始按照题目的意思写了半天,实际上并不需要,我们只需要记录出现次数最多的那个元素的元素值和出现次数,
首先将数组排序,如果当前的数和上一个数相等,我们就跳过这个数,否则我们应该通过加上某个数使得nums[i]成为之前的众数(在这里因为只需要计算操作次数,所以我们并不关心加上的那个数是多少),res++
最后输出res的值
(2) 字符串的方式
将a-z映射为1-26,那么给定一个字母组成的字符串就可以得到一个由数字组成的字符串
但是这个数字字符串可能会对应原来多个字母组成的字符串
114514,对应的字符串数量为6
简单的动态规划
dp[i] = dp[i-1]
+ dp[i-2] 如果nums[i] 可以和nums[i-1]构成一个字母
全部评论
相关推荐