2022-05-19:给定一个数组arr,给定一个正数M, 如果arr[i] + arr[j]可以被M整除,并且i < j,那么(i,j)叫做一个M整除对。 返回arr中M整除对的总数量。 来自微软。
2022-05-19:给定一个数组arr,给定一个正数M,
如果arr[i] + arr[j]可以被M整除,并且i < j,那么(i,j)叫做一个M整除对。
返回arr中M整除对的总数量。
来自微软。
答案2022-05-19:
求余,答案叠加,次数叠加。
时间复杂度:O(N)。
空间复杂度:O(M)。
代码用rust编写。代码如下:
fn main() {
let arr: Vec<isize> = vec![5, 5, 5];
let ans = num2(&arr, 5);
println!("ans = {}", ans);
}
fn num2(arr: &Vec<isize>, m: isize) -> isize {
let n = arr.len() as isize;
let mut cnts: Vec<isize> = vec![];
for _i in 0..m {
cnts.push(0);
}
let mut ans: isize = 0;
let mut i: isize = n - 1;
while i >= 0 {
let cur = (arr[i as usize] % m + m) % m;
ans += cnts[((m - cur) % m) as usize];
cnts[cur as usize] += 1;
i -= 1;
}
return ans;
}
执行结果如下:
公众号:福大大架构师每日一题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
2021-05-19 2021-05-19:给定一个非负数组成的数组,长度一定大于1,想知道数组中哪两个数&的结果最大。返回这个最大结果。时间复杂度O(N),额外空间复杂度O(1)。