算法题
1. 01串修改
题目描述:
给定一个只包含’0’和’1’两种字符的字符串,每次操作可以选择相邻的两个宇符,将它们同时变成’0’或者同时变成’1’。
请问最少多少次操作后,所有的字符都相同?
字符串长度不超过1000。
示例1:
输入:
“1001101”
输出:
2
2. 连续子数组数量
题目描述:
给定一个数组,请你编写一个函数,返回元素乘积末尾零数量大于等于x的连续子数组数量。
答案可能太大,请将答案对10^9+7取模再返回。
数组长度不超过10^5。
数组元素、x均为不超过10^9的正整数。
示例1:
输入:
[5,2,3,50,4],2
输出:
6
说明:
共有以下6个合法连续子数组:
[5,2,3,50],乘积为1500,末尾有2个零。
[5,2,3,50,4],乘积为6000,末尾有3个零。
[2,3,50],乘积为300,末尾有2个零,
[2,3,50,4],乘积为1200,末尾有2个零。
[3,50,4],乘积为600,末尾有2个零。
[50,4],乘积为200,末尾有2个零。
3. 好矩阵
题目描述:
我们定义一个矩阵为”好矩阵”,当日仅当该矩阵所有2*2的子矩阵数字和为偶数。
例如:
[1][2][3]
[2][3][4]
是好矩阵,两个2*2的子矩阵的和分别是8和12。
请问n行m列,矩阵中每个数均在[1,x]范围内的好矩阵有多少种?由于答案过大,请对10^9+7取模。
数据范围:2≤n,m,x≤10^9
保证x为偶数。
示例1:
输入:
2,2,2
输出:
8
说明:
合法的8个矩阵为:
[1][1] [1][2] [2][1] [2][2]
[1][1] [2][1] [1][2] [1][1]
[1][1] [1][2] [2][1] [2][2]
[2][2] [1][2] [2][1] [2][2]
问答题
题目描述:
考虑设计一个单品秒杀系统(大家都来抢购同一件商品,商品的数量有限,秒杀时的QPS需要支持超过20w/s),请说明在前端、接入层、逻辑层和存储层分别需要考虑的点。