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 代码就不贴了,直接在牛客上写的,没有保存本地。

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

相关推荐

面试很看运气的哈哈&nbsp;经典的开始运气好,实力不够遂寄部门&nbsp;pcg腾讯文档约的时候说我在系统里有爽约标记,我震惊,是因为之前错过了wxg的面试,但是我发了邮件说有事不能参加啊,讲完没怎么追究(哎估计因为这个爽约标记我这辈子去不了腾讯了)一面项目介绍url到页面性能优化怎么考虑的,怎么定位问题写题写个第一次可以马上触发的防抖(写了个大差不差吧)最大和子串(用的前缀和,其实好像不对但是过了用例hh)反问是直系学长所以才捞了简历水平还行,有些api不懂也没事,他当年也不懂,进来后都能学,希望能做同事hh(是我太菜)&nbsp;给了我好的面评。二面大概四天后约的大佬级别的人物好像是自我介绍对我的性能优化提出质疑说你这个系统需要这么多优化吗(我有点无力感,感觉到了不感兴趣)然后就是在扯这些点最后问我如果要设计一个协同开发,怎么去让30个人做一个页面(太难了答的一坨)三面以为二面就挂了,没想到泡了半个月约了三面感觉是kpi自我介绍完说感觉你做的都是crud,没什么难度啊说下怎么设计文档呢我说了之前看过的不动层和渲染层概念怎么设计实时性文档扯了半天不会,说用ws做问我对互联网这几年的看法,为什么这么卷还来做开发第二天就挂了,至今没人捞我hh跟腾讯没什么缘分吧可能
点赞 评论 收藏
分享
评论
3
11
分享
牛客网
牛客企业服务