版本号比较
问题描述
在某个项目中,每个版本都用版本号标记,由一个或多个修订号组成,修订号之间由点号.分隔。每个修订号可能有多位数字,并且可能会包含前导零。你需要根据两个版本号 version1 和 version2,判断哪个版本更新,或者它们是否相同。
例如,2.5.33 和 0.1 都是有效的版本号。
当比较两个版本时,从左到右依次比较它们的修订号。忽略每个修订号的前导零,直接比较修订号对应的整数值。如果其中一个版本没有足够的修订号,缺失部分默认补为0。
你需要根据以下规则返回比较结果:
- 如果
version1 > version2,返回1。 - 如果
version1 < version2,返回-1。 - 如果两个版本相等,返回
0。
测试样例
样例1:
输入:version1 = "0.1" , version2 = "1.1"
输出:-1
样例2:
输入:version1 = "1.0.1" , version2 = "1"
输出:1
样例3:
输入:version1 = "7.5.2.4" , version2 = "7.5.3"
输出:-1
样例4:
输入:version1 = "1.0" , version2 = "1.0.0"
输出:0
:::success 模拟
:::
def solution(version1, version2):
# Edit your code here
vers1 = list(map(int, version1.split('.')))
vers2 = list(map(int, version2.split('.')))
i = 0
l1, l2 = len(vers1), len(vers2)
res = 0
while True:
if i >= l1 and i >=l2:
res = 0
break
if i >= l1 and vers2[i] > 0:
res = -1
break
if i >= l2 and vers1[i] > 0:
res = 1
break
if i >= l1 or i >=l2:
i += 1
continue
if vers1[i] > vers2[i]:
res = 1
break
elif vers1[i] < vers2[i]:
res = -1
break
i += 1
# print(res)
return res
if __name__ == "__main__":
# Add your test cases here
print(solution("0.1", "1.1") == -1)
print(solution("1.0.1", "1") == 1)
print(solution("7.5.2.4", "7.5.3") == -1)
print(solution("1.0", "1.0.0") == 0)
比赛配对问题
问题描述
小R正在组织一个比赛,比赛中有 n 支队伍参赛。比赛遵循以下独特的赛制:
- 如果当前队伍数为 偶数,那么每支队伍都会与另一支队伍配对。总共进行
n / 2场比赛,且产生n / 2支队伍进入下一轮。 - 如果当前队伍数为 奇数,那么将会随机轮空并晋级一支队伍,其余的队伍配对。总共进行
(n - 1) / 2场比赛,且产生(n - 1) / 2 + 1支队伍进入下一轮。
小R想知道在比赛中进行的配对次数,直到决出唯一的获胜队伍为止。
测试样例
样例1:
输入:n = 7
输出:6
样例2:
输入:n = 14
输出:13
样例3:
输入:n = 1
输出:0
:::success 模拟
:::
def solution(n: int) -> int:
# write code here
res = 0
while n != 1:
if n % 2 == 0:
res += n // 2
n = n // 2
else:
res += n // 2
n = n // 2 + 1
return res
if __name__ == '__main__':
print(solution(7) == 6)
print(solution(14) == 13)
print(solution(1) == 0)
刷抖音网络是怎么交互的?
- 网络接入
- 网络传输
网络接入-ARP协议 查找下一跳IP地址,不是目标地址
- 逻辑同网段才能发送ARP ---- 你的手机是否通过ARP获得抖音的ip?当然不是!因为不再同一网段
- ARP请求广播,ARP应答单播
- 免费ARP?ARP代理? 免费ARP是一台新机器加入网段通知其他机器更新ARP缓存,用来提高效率,另外可以避免IP冲突。 ARP代理相当于ARP劫持
网络接入-IP协议
- 唯一标识,互联网通用。抖音客户端一个,抖音服务端一个。
- Mac地址不能代替IP地址吗? 有的老设备没有mac地址,为了向下兼容,有封装了一层IP地址
- IPV4不够用,一般怎么解决? IPV6, NAT
网络接入-NAT
- 家里路由器是怎样上网的?
- 多个内网客户端访问同一个目标地址+端口,源端口恰好一样,冲突了? NAT是IP+端口
网络传输-数据包
网络传输-先请求DNS
UDP
TCP
HTTP/HTTP1.1
网络架构怎么给抖音提质
- 网络提速
- 网络稳定
网络提速- HTTP2.0
网络提速-怎么理解多路复用/stream?
- 单个TCP链路传输
- 如果TCP丢包怎么办?
网络提速-QUIC/HTTP3.0
- TCP or UDP? UDP
- Kernel or Usersapce Userspace
- 0 RTT
- 弱网优势
网络提速-数据中心分布
同运营商访问
静态资源,路径优化(CDN)
动态API, 路径优化(DSA)
网络稳定-容灾
- 故障发生
- 故障感知
- 自动切换
- 服务恢复
网络稳定-故障排查
- 故障明确
- 故障止损
- 分段排查
出现什么故障?-》沟通是前提
- 什么业务?什么接口故障?
- 故障体现在哪里?
- 访问其他目标是否正常?
- 是否修改导致的异常?
替换函数
问题描述
给定一个字符串s_s_,编写一个函数,将字符串中的小写字母a替换为"%100",并返回替换后的字符串。
例如,对于字符串"abcdwa",所有a字符会被替换为"%100",最终结果为%100bcdw%100"。
测试样例
样例1:
输入:s = "abcdwa"
输出:'%100bcdw%100'
样例2:
输入:s = "banana"
输出:'b%100n%100n%100'
样例3:
输入:s = "apple"
输出:'%100pple'
:::success 模拟
:::
def solution(s: str) -> str:
# write code here
i = 0
n = len(s)
while i < n:
if s[i] == "a":
s = s[:i] + "%100" + s[i+1:]
i += 3
n += 3
i += 1
# print(s)
return s
if __name__ == '__main__':
print(solution(s="abcdwa") == '%100bcdw%100')
print(solution(s="banana") == 'b%100n%100n%100')
print(solution(s="apple") == '%100pple')