一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
码农求职神器Triplebyte:
不用海投,内推多家公司面试
Airbnb 数据科学职位
in analytics and inference
游戏初创公司
招聘工程师、Designer和游戏策划
游戏初创公司DreamCraft招聘工程师、UIUX Designer和游戏策划
电商初创公司Good Days
招聘SDE/UI/TPM实习生
把贵司招聘信息放这里
查看: 934|回复: 16
收起左侧

eBay新鲜面经

[复制链接] |试试Instant~ |关注本帖
格格笑 发表于 2017-11-14 03:30:53 | 显示全部楼层 |阅读模式

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

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

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
Maximum Subarray at most k element

攒RP

. 1point 3acres 璁哄潧

评分

2

查看全部评分

 楼主| 格格笑 发表于 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
. from: 1point3acres.com/bbs
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. Waral 鍗氬鏈夋洿澶氭枃绔,
        // 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);. more info on 1point3acres.com
            // 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
            }. Waral 鍗氬鏈夋洿澶氭枃绔,
        }
        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. more info on 1point3acres.com
楼主面的是哪个组呀?

backend  烙印黑的飞起来~
回复 支持 2 反对 0

使用道具 举报

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是怎么解决的啊
回复 支持 反对

使用道具 举报

seasean 发表于 2017-11-15 13:02:13 | 显示全部楼层
格格笑 发表于 2017-11-14 23:53
backend  烙印黑的飞起来~

感谢楼主分享,能问一下就是backend组么,还是sre
回复 支持 反对

使用道具 举报

desperatelife 发表于 2017-11-17 13:03:02 | 显示全部楼层
  1. int result = Integer.MIN_VALUE;
  2.                 for (int i = 0; i < n - k; i++) {
  3.                         int currMax = nums[i];
  4.                         for (int j = i + 1; j < i + k; j++) {
  5.                                 currMax = Math.max(nums[i], currMax + nums[j]);
  6.                                 result = Math.max(result, currMax);
  7.                         }.1point3acres缃
  8.                 }
复制代码
. 1point3acres.com/bbs
只想到了nk的解法
回复 支持 反对

使用道具 举报

jsgq 发表于 2017-11-23 08:40:37 | 显示全部楼层
求问面的是哪个组的backend
回复 支持 反对

使用道具 举报

我一辈子赖美帝 发表于 2017-12-7 15:15:15 | 显示全部楼层
抄的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));. Waral 鍗氬鏈夋洿澶氭枃绔,
     }
}
回复 支持 反对

使用道具 举报

cicean 发表于 2017-12-11 02:37:36 | 显示全部楼层
楼主这题是 莉蔻 上 尔三舅 么?
Sliding Window Maximum
回复 支持 反对

使用道具 举报

本版积分规则

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2018-1-22 06:50

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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