0411网易互娱-数据挖掘算法AC

题目1:三数求和
给定数组nums和Target,求数组中i,j,k a[i] + a[j] + a[k] = target i != j != k的三元组个数。
AC
import sys
from collections import Counter

def two_pointers(nums, target):
    left = 0
    right = len(nums) - 1
    cnt = Counter(nums)
    res = 0
    while left < right:
        tsum = nums[left] + nums[right]

        if tsum < target:
            left += 1
            while left < right and nums[left] == nums[left-1]:  # 去重
                left += 1
        elif tsum > target:
            right -= 1
            while left < right and nums[right] == nums[right+1]:  # 去重
                right -= 1
        else:
            if nums[left] == nums[right]:  # 如果左右两数相等,则有C(n,2) = n*(n-1)/2种组合
                res += cnt[nums[left]] * (cnt[nums[left]] - 1) // 2
            else:  # 两数不等,则有n_left * n_right 个数
                res += cnt[nums[left]] * cnt[nums[right]]

            left += 1
            while left < right and nums[left] == nums[left-1]:  # 去重
                left += 1

            right -= 1
            while left < right and nums[right] == nums[right+1]:  # 去重
                right -= 1
    return res


def func(nums, target):
    if len(nums) < 3:
        return 0

    nums.sort()

    res = 0
    for i in range(len(nums)):
        tmp_target = target - nums[i]
        res += two_pointers(nums[i+1:], tmp_target)
    return res


nums = input().strip().split(',')
nums = [int(i) for i in nums]
target, nums = nums[0], nums[1:]

res = func(nums, target)
print(res)
题目二:闯关问题
给定一个数组,可以从任意位置开始并到最后。闯关后会获得想要奖励,不能闯相邻关卡。
解题:动态规划,参考leetcode抢劫问题
dp[i] = max(dp[i-1], dp[i-2]+nums[i])
dp[0] = nums[0]
dp[1] = max(nums[0], nums[1])
AC 代码就不贴了,直接在牛客上写的,没有保存本地。

#网易互娱笔试##网易互娱##笔试题目##数据挖掘工程师#
全部评论
想知道到底有人收到面试了吗😂
点赞 回复 分享
发布于 2020-04-19 11:15
第一题暴力枚举过80%就没动了
点赞 回复 分享
发布于 2020-04-12 08:02

相关推荐

2025年初,新的一年开始,我给自己暗暗打气,发誓今年一定要拿到offer。如今2025年即将结束,找工作仍然没有任何水花,如今的失意和落魄和年初信心满满的姿态形成鲜明对比,想必也是因为被社会毒打,认清现实了吧。先分享一下贴主的背景,本人女,本科末流985文科专业,后来保送到华五,成绩一直是班级第一,有过国奖,实习有多段头部大厂经历。发贴的直接原因是今天华为面试挂,在反思中有很多复杂的想法,包括对自身能力的怀疑、对面试官所提问题的不解、对大环境的无奈。贴主是一个说话温柔、不喜欢咄咄逼人、有点社恐的人(基本上算是人们眼中对小女生的刻板印象,所以在历次群面中基本全挂(看到大家争抢当leader、t...
在找内推的小虾米:感觉这一段经历和我好像啊,前段时间面了很多车企,面试项目经历各种被拷打,大多数都没过一面,最有希望拿offer的一个终面挂了把我干破防了,打电话给爸妈哭了一个多小时才缓过来。我也开始否定自己,否定自己的一切,包括性格,能力,成长经历。。。最后面了深圳的某家公司,面试官人都挺友好,提的问题有深度但找到切入点 ,最后hr也按岗位最高的标准给的offer,我才发现自己并没有这么不堪,只是我的能力和经验和之前的岗位要求不那么符合而已。帖主一定不要灰心,招聘的窗口期还有很长很长,保持自信扬长避短,一定有企业能发现你的闪光点,祝好。
我的求职进度条
点赞 评论 收藏
分享
迷茫的大四🐶:都收获五个了,兄弟那还说啥,不用改了,去玩吧
点赞 评论 收藏
分享
评论
4
11
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务