华为OD笔试
1.整数数组nums,整数k。输出将数组A中小于k的整数组合到一起的最小交换次数。组合在一起是指满足条件的数字相邻,不要求相邻后在数组中的位置。(100分)
样例1:
nums=[1,3,1,4,0], k=2
输出:1 ,解析:交换第一个1和4
样例2:
nums=[0,0,0,1,0], k=2
输出:0,解析:已经满足条件
样例3:
nums=[2,3,2], k=1
输出:0,解析:不存在小于k的数,无需交换
2.将格式为 {1~128} #{0~255}#{0~255}#{0~255}的ipv4地址(即#分割的4节的ipv4形式)转换为对应的32位整数,输入形式为字符串,存在空串、含ip中不存在的字符、非合法的#分十进制数、十进制数不在合法区间 的4种非法输入,此时输出“invalid ip"(100分)
样例1: 100 #101#1#5
输出: 1694340997
样例2: 1#2#3
输出: invalid ip
3. 模拟九宫格输入法,默认为数字模式,按‘ #’键可在数字模式和字符模式之间切换,字符模式时长按数字键可在候选字符中循环,按‘/’键延迟(相当于手指抬起,不再循环候选的字符)。输入为字符串,输出该输入法输入得到的文本。(200分)
九宫格键盘布局为
[ 1,.?! ] [ 2ABC ] [ 3DEF ]
[ 4GHI ] [ 5JKL ] [ 6MNO ]
[ 7PQRS ] [ 8TUV ] [ 9WXYZ ]
[ 0 空格 ]
样例1: 2#22/222
输出: 2BC
思路:(参考链接均非本人所写)
1.固定长度的滑动窗口,记录窗口内的大于k的数字数量count,窗口滑动时count即为需要交换的次数,可参考 https://blog.csdn.net/qq_32424059/article/details/99544441
3.简单模拟题,可参考 https://www.bilibili.com/s/video/BV11C4y1h7sV
#华为OD招聘##笔经##华为#