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

eBay新鲜面经

全局:

2017(7-9月) 码农类General 硕士 全职@ebay - 内推 - 技术电面  | | Other | 应届毕业生

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
Maximum Suba
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
P


评分

参与人数 2大米 +23 收起 理由
yzkst06100 + 3 很有用的信息!
紫衣云梦小怪兽 + 20

查看全部评分


上一篇:巨硬实习电面面经..
下一篇:Citadel 全套OA
 楼主| 文体两开花 2017-11-14 23:54:55 | 只看该作者
全局:
Update一下 GG 思密达了    烙印小哥  十分稳
回复

使用道具 举报

 楼主| 文体两开花 2017-11-14 23:56:55 | 只看该作者
全局:
lylwill 发表于 2017-11-14 06:07
噢噢噢 lz有想出O(n) 的解法吗 如果双指针移的话reach到了length k 判断sum 如果大于0 我是想把begin 往 ...

预处理成prefix sum数组, Deque 维护一个 K范围内的最小值  遍历一遍求当前减去最小   遇到比global max 就update
回复

使用道具 举报

 楼主| 文体两开花 2017-12-8 03:00:40 | 只看该作者
全局:
翻到自己这页,给大家发个我当时写的完整版吧 233

import java.util.*;

public class eBayIllustration{
    public static void main(String[] args) {
        int[] input = new int[]{10, 30, -40, 3};
        eBayIllustration sol = new eBayIllustration();
        int[] res = sol.maxSubarrayAtMostK(input, 2);
        if (res == null) {
            System.out.println("no one was selected");
        } else {
            System.out.println(res[0] + "~" + res[1]);
        }
    }

    // basically, my idea is maintain a deque to contains currently valid min value
    // valid means the min value must be in the scope of k from current i
    // Time: O(N)
    // Space: O(N)
    public int[] maxSubarrayAtMostK(int[] input, int k) {
        if (input == null || input.length == 0) {
            return new int[0];
        }
        // Preprocessing
        // nums[i]  represents the sum : input[0] + ... input[i - 1]
        int[] nums = new int[input.length + 1];
        for (int i = 1; i < nums.length; i++) {
            nums[i] = nums[i - 1] + input[i - 1];
        }
        Deque<Integer> deque = new LinkedList<>();
        int max = 0;
        int[] candidate = null;
        for (int i = 0; i < nums.length; i++) {
            while (!deque.isEmpty() && nums[deque.peekLast()] >= nums[i]) {
                deque.pollLast();
            }
            deque.addLast(i);
            // out of scope
            if (deque.peekFirst() < i - k) {
                deque.pollFirst();
            }
            // if better subarray appear, update the result/candidate
            if (nums[i] - nums[deque.peekFirst()] > max) {
                max = nums[i] - nums[deque.peekFirst()];
                candidate = new int[]{deque.peekFirst(), i - 1}; //inclusive idx
            }
        }
        return candidate;// e.g  [1,3] 1 means the left bound 3 means the right bound of the subarray of input, bothe left and right bound are inclusive.
    }
}
回复

使用道具 举报

推荐
 楼主| 文体两开花 2017-11-14 23:53:57 | 只看该作者
全局:
yzkst06100 发表于 2017-11-14 05:23
楼主面的是哪个组呀?

backend  烙印黑的飞起来~
回复

使用道具 举报

全局:
抄的geeks for geeks 烙印解法,o(n)
public class LongestSubArrayHavingSumK {
         public static int atMostSum(int[] nums,int k){
         int sum = 0;
         int cnt = 0, maxcnt = 0;
         for (int i = 0; i < nums.length; i++) {
             if ((sum + nums[i]) <= k) {
                 sum += nums[i];
                 cnt++;
             }
             else if(sum!=0){
                 sum = sum - nums[i - cnt] + nums[i];
             }
             maxcnt = Math.max(cnt, maxcnt);
         }
         return maxcnt;
     }

     public static void main(String[] args){
         int[] nums = { 1, 2, 1, 0, 1, 1, 0 };
         int k = 4;
         System.out.print(atMostSum(nums,k));
     }
}
回复

使用道具 举报

🔗
lylwill 2017-11-14 04:27:36 | 只看该作者
全局:
问下lz 啥叫 at most k element? 和lc有啥区别吗
回复

使用道具 举报

🔗
MarvinJ 2017-11-14 05:12:43 | 只看该作者
全局:
楼主为啥我看ebay careers recent grad没有opening啊
回复

使用道具 举报

🔗
 楼主| 文体两开花 2017-11-14 05:17:25 | 只看该作者
全局:
lylwill 发表于 2017-11-14 04:27
问下lz 啥叫 at most k element? 和lc有啥区别吗

subarray的size最多为k
回复

使用道具 举报

🔗
skinsoctopus 2017-11-14 05:19:41 | 只看该作者
全局:
lz描述可以稍微详细点吗?请问是lc哪一题?
回复

使用道具 举报

🔗
yzkst06100 2017-11-14 05:23:20 | 只看该作者
全局:
楼主面的是哪个组呀?
回复

使用道具 举报

🔗
lylwill 2017-11-14 06:07:51 | 只看该作者
全局:
格格笑 发表于 2017-11-14 05:17
subarray的size最多为k

噢噢噢 lz有想出O(n) 的解法吗 如果双指针移的话reach到了length k 判断sum 如果大于0 我是想把begin 往后面移动一个 end再移动一个 不过这样出来的可能会ignore一些case eg cur_window = [7 -11 10 12], sum > 0, len = k => move cur_window = [-11 10 12 -13] 就会漏掉 10 + 12 = 22, lz是怎么解决的啊
回复

使用道具 举报

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

本版积分规则

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