本文主要是介绍华为OD试题七(IPv4地址转换成整数、比赛的冠亚季军),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. IPv4地址转换成整数
示例代码:
#测试数据
s1 = "100#101#1#5"def fun(s):s_list = s.split("#")# 转化成十六进制数 左边补零s_16_list = [hex(int(_))[2:].zfill(2) for _ in s_list]s_16_str = ''.join(s_16_list)return int(s_16_str,16)
r = fun(s1)
print(r)
2. 比赛的冠亚季军
题目描述:
有N(3<=N<10000)个运动员,他们的id为0到N-1,他们的实力由一组整数表示。
他们之间进行比赛,需要决出冠亚军。比赛的规则是0号和1号比赛,2号和3号比
赛,以此类推,每一轮,相邻的运动员进行比赛,获胜的进入下一轮;实力值大的
获胜,实力值相等的情况,id小的情况下获胜;,轮空的直接进入下一轮.
输入描述:
输入一行N个数字代表N的运动员的实力值(0<=实力值<=10000000000)。
输出描述:
输出冠亚军的id,用空格隔开。
示例1
输入:2 3 4 5
输出:3 1 2
示例代码:
# 核心 : 冠亚季军 是从四个元素中 决策出来的,因此 只需要逼近四个元素即可# 测试数据
s = [2,3,4,5,6,7,8,9]# 两两比较 迭代出新列表
def fun1(s_list):res = []cur = 0while cur < len(s_list):a_index,a_value = s_list[cur].split(":")b_index,b_value = s_list[cur+1].split(":")if str(a_value) >= str(b_value):ele = s_list[cur]else:ele = s_list[cur + 1]res.append(ele)cur += 2return resdef fun(s):res = []tmp = [ "{}:{}".format(str(index),str(value)) for index,value enumerate(s)]# 找出最后的四个元素while len(tmp) > 4:tmp = fun1(tmp)# 以下 从 四个元素中找出 冠军 亚军 季军t1 = tmpt2 = fun1(t1)for _ in t2:t1,remove(_)if int(t2[0].split(":")[1]) <= int(t2[1].split(":")[1]):t = t2[0]t2[0] = t2[1]t2[1] = tfor _ in t2:res.append(_.split(":")[0])t = t1[0].split(":")[0] if int(t1[0].split(":")[1]) >= int((t1[1].split(":")[1])) else t1[1].split(":")[0]res.append(t)return resr = fun(s)
print(r)
这篇关于华为OD试题七(IPv4地址转换成整数、比赛的冠亚季军)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!