华为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招聘##笔经##华为#
全部评论
第一题 nums = list(map(int,input().split())) k = int(input()) num = 0 for i in nums:     if i < k:         num += 1 res = num for i in range(len(nums) - num + 1):     window = nums[i:i + num]     win = 0     for j in window:         if j < k:             win += 1     res = min(res, num - win) print(res)
1 回复
分享
发布于 2022-03-30 11:23
需要华为机试题库私聊
2 回复
分享
发布于 2022-05-08 21:38
联易融
校招火热招聘中
官网直投
华为OD怎么样?和正式员工有啥区别
点赞 回复
分享
发布于 2022-03-22 10:23
[ 1,.?! ] [ 2ABC ] [ 3DEF ] [ 4GHI ] [ 5JKL ] [ 6MNO ] [ 7PQRS ] [ 8TUV ] [ 9WXYZ ] [ 0 空格 ] 样例1: 2#22/222 输出: 2ABC 疑问:这个不应该是输出2BC吗? 这个A是哪里来的呀???谢谢
点赞 回复
分享
发布于 2022-03-22 22:29
第一题样例1没看懂,不应该交换3和0吗?或者交换第一个1和4
点赞 回复
分享
发布于 2022-03-31 00:26
第二题没看懂,啥叫对应的32位整数?转化成2进制以后拼起来再转回10进制?
点赞 回复
分享
发布于 2022-03-31 11:25

相关推荐

投递腾讯等公司8个岗位
点赞 评论 收藏
转发
8 74 评论
分享
牛客网
牛客企业服务