楼主: zhenjieruan
跳转到指定楼层
上一主题 下一主题
收起左侧

Facebook二面跪经。。。

🔗
 楼主| zhenjieruan 2016-3-15 12:20:52 | 只看该作者
全局:
nuanuan1208 发表于 2016-3-15 09:27
public class KWindow{

        // n is the number of consecutives, k is the number of counts

我靠!膜拜大神!!!
回复

使用道具 举报

🔗
novice00 2016-3-15 12:38:21 | 只看该作者
全局:
tk1322715 发表于 2016-3-15 08:34
层主看了你的答案。我感觉可能有点不对的地方。
curMax = curMax > dp[j - i * n] ? curMax : dp[j - i  ...

代码确实有点问题,应该是
curMax = curMax > dp[i-1][j - n] ? curMax : dp[i-1][j - n];
回复

使用道具 举报

🔗
ok123 2016-3-16 09:41:15 | 只看该作者
全局:
O(N) implement
-------
def max3window(arr, n):
    X = len(arr)
    if n * 3 > X: return -1 # impossible
    dp = [-0x80000000] * X
    dp[n-1] = sum(arr[:n]) # sum first n elements
    print  dp
    for i in range(n, X):
        print "---", dp[i-1]
        dp[i] = dp[i-1] + arr[i] - arr[i-n]
    # move 2nd window
    max_v = -0x80000000 # very small
    for i in range(2*n-1, X-n):
        left = dp[n-1:i-n+1]
        right = dp[i+n:]
        print left, right
        sum_v = max(left) + dp[i] + max(right)
        max_v = max(max_v, sum_v)
    return max_v

arr = [1, 3, 7, 7, 2, 1, 1, 4, 8, 8, 6, 1, 1, 9]
print max3window(arr, 2)
回复

使用道具 举报

🔗
ericLaw 2016-3-16 13:28:23 | 只看该作者
全局:
第一题不用queue写了一下
  1. def findSum(nums, n):
  2.     currentSum, maxSum = 0, 0
  3.     for i in xrange(len(nums)):
  4.          currentSum += nums[i]
  5.          if n: n-=1
  6.          else: currentSum -= nums[i-n]
  7.          maxSum = max(maxSum, currentSum)
  8.     return maxSum
复制代码
回复

使用道具 举报

🔗
ericLaw 2016-3-16 13:34:13 | 只看该作者
全局:
ericLaw 发表于 2016-3-16 13:28
第一题不用queue写了一下

有个bug,maxSum 应该初始成 -float('INF')
回复

使用道具 举报

🔗
sealove999 2016-4-18 09:00:03 | 只看该作者
全局:
nuanuan1208 发表于 2016-3-15 11:39
public int getMaxValue(int[] nums, int n, int k) {
                int len = nums.length;
        int[] sum = n ...

拜大神,拜大神,
回复

使用道具 举报

🔗
tigercode 2016-9-13 23:26:48 | 只看该作者
全局:
2.
假设window size M, f(nums[], M)就是第一问的解, O(M)
dp[i, j] 表示,nums[0...i] 里求j个的最大和, dp[i, j] = Math.max(dp[k, j-1] + f(nums[k+1...j], M)) (where  (k+1) >= (j-1)*M  且  (j-k) >= M),然后填表row by row就行,最后dp[nums.length-1, 3]就是答案, 假设f的cost O(M)看做常数,整个的cost就是O(mn)
回复

使用道具 举报

🔗
ellenren 2017-9-20 17:27:17 | 只看该作者
全局:
nuanuan1208 发表于 2016-3-15 11:39
public int getMaxValue(int[] nums, int n, int k) {
                int len = nums.length;
        int[] sum = n ...

谢lz
惊为天人..
回复

使用道具 举报

🔗
chenyx95 2018-12-12 10:34:52 | 只看该作者
本楼:
全局:
楼主加油
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表