网易2023.9.23笔试
100 100 100 0
第一题完全骗的分数,完全不会做。我在里面判断了一下长度是不是奇偶居然就过了…..(我知道这是不对的,但是确实是过了)
第二题属于简单题,用的哈希表
第三题需要注意除法取模要求逆元,题目本质上是数学题,子序列的平均和=子序列个数*所有元素之和/数组长度。子序列个数为(2^数组长度)-1,手撕了一个快速幂
第四题看都不想看一眼
第一题完全骗的分数,完全不会做。我在里面判断了一下长度是不是奇偶居然就过了…..(我知道这是不对的,但是确实是过了)
第二题属于简单题,用的哈希表
第三题需要注意除法取模要求逆元,题目本质上是数学题,子序列的平均和=子序列个数*所有元素之和/数组长度。子序列个数为(2^数组长度)-1,手撕了一个快速幂
第四题看都不想看一眼
全部评论
我也是前三题100
第四题a,b,c分解质因数, 质因数取dict保存,每次,dictc元素×d,操作dict = dict(counter(dicta) + counter(dictb) + counter(dictc)), 最后对总dict的每个key求积再求模就行
第三题
func solution3(_ nums: [Int]) -> Int {
let N = nums.count
let K = mypow(N) - 1
let mod = Int(1e9+7)
var sum = 0
for num in nums {
sum = (sum + num) % mod
}
let inverseN = modInverse(N, mod)
let result = (K * sum % mod) * inverseN % mod
return result
}
func mypow(_ n: Int) -> Int {
var _n = n
var a = 2
var res = 1
let mod = Int(1e9+7)
while _n > 0 {
if _n % 2 == 1 { res = (res * a) % mod }
a = (a * a) % mod
_n /= 2
}
return res
}
func modInverse(_ a: Int, _ m: Int) -> Int {
var m0 = m
var a0 = a
var m1 = m
var x0 = 0
var x1 = 1
while a0 > 1 {
let q = a0 / m0
var t = m0
m0 = a0 % m0
a0 = t
t = x0
x0 = x1 - q * x0
x1 = t
}
if x1 < 0 {
x1 += m1
}
return x1
}
佬,第二题哈希表啥思路
第四题直接print查询的数目//2 骗了10%
相关推荐
投递XMind等公司10个岗位 >
点赞 评论 收藏
分享