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

狗家昂赛1.25

🔗
lizy.wang11 2019-1-27 06:04:04 | 只看该作者
全局:
请问楼主第四题都大概讨论了些啥,细节什么的?
回复

使用道具 举报

🔗
 楼主| glc12125 2019-1-27 06:16:55 | 只看该作者
全局:
就是基本的功能分析+存储分析+详细说明 upload 和 display(怎么根据zom in 来查询附近的分享audio)两个workflow。在以上都解释清楚了之后就需要深入讨论如果用户暴涨怎么处理。这就涉及到了sharding, 然后按照什么key来sharding的问题。然后多台机器的情况下需要merge从多个服务器传回来的topK recent audio sharings.
回复

使用道具 举报

🔗
dertas1993 2019-1-27 07:45:54 | 只看该作者
全局:
glc12125 发表于 2019-1-27 03:59
不能greedy的吧?如果前一个箱子放不进去就卡住了,就得重新选择从哪一个箱子开始往坑里面放

所以从最小的箱子开始放就是最优解了吧,所以其实还是greedy的么?如果最小的箱子都放在最小坑里了,后面的箱子开始卡住了也没什么办法了吧
回复

使用道具 举报

🔗
thomasedzhang 2019-1-27 08:51:00 | 只看该作者
全局:
哇塞!楼主大神啊!
回复

使用道具 举报

🔗
zli_test 2019-1-28 02:51:26 | 只看该作者
全局:
  1. public class CustomIterator <T> {
  2.     private final ArrayList<T> elements;
  3.     private int cursor;
  4.     public CustomIterator(final Iterator<T> iter) {
  5.         cursor = 0;
  6.         elements = new ArrayList<>();
  7.         while(iter.hasNext()) {
  8.             elements.add(iter.next());
  9.         }
  10.     }
  11.     public boolean hasNext() {
  12.         return cursor < elements.size();
  13.     }
  14.     public T next() {
  15.         if (cursor >= elements.size()) {
  16.             throw new NoSuchElementException();
  17.         }
  18.         return elements.get(cursor++);
  19.     }
  20.    
  21.     public void skip(final int n) {
  22.         cursor += n;
  23.     }
  24. }
复制代码

回复

使用道具 举报

🔗
 楼主| glc12125 2019-1-28 05:45:15 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies

评分

参与人数 1大米 +6 收起 理由
真淘蛮 + 6 求回复

查看全部评分

回复

使用道具 举报

🔗
mysteryjoe 2019-1-28 07:59:12 | 只看该作者
全局:
glc12125 发表于 2019-1-27 03:58
你好,箱子是必须按照顺序来的。最佳方案应该是双指针的方式,我最后解释了应该维护一个单调不递增的坑的 ...

请问推箱子这题,箱子高度是已经排序好的吗?要是没排序的话指向高度最小的箱子的指针该怎么移动
回复

使用道具 举报

🔗
真淘蛮 2019-1-28 13:04:42 | 只看该作者
全局:
glc12125 发表于 2019-1-28 05:45
非常感谢你的代码,不过skip(int)函数不是说跳过多少个元素,而是跳过指定值一次。例如
1, 2, 1, 3, 1,  ...

求回复!你两次skip(1) 后可以接着Skip(2) 吗就是可以跳过之前的吗?
回复

使用道具 举报

🔗
zli_test 2019-1-28 16:53:12 | 只看该作者
全局:
glc12125 发表于 2019-1-27 13:45
非常感谢你的代码,不过skip(int)函数不是说跳过多少个元素,而是跳过指定值一次。例如
1, 2, 1, 3, 1,  ...
  1. public class CustomIterator {
  2.     private ListNode head;
  3.     private final ListNode tail;
  4.     //lookup node by value
  5.     private final HashMap<Integer, LinkedList<ListNode>> keyToNode;

  6.     public CustomIterator(final Iterator<Integer> iter) {
  7.         head = new ListNode(0);
  8.         tail = new ListNode(0);
  9.         head.next = tail;
  10.         tail.prev = head;
  11.         keyToNode = new HashMap<>();
  12.         while (iter.hasNext()) {
  13.             final ListNode node = new ListNode(iter.next());
  14.             insertBeforeTail(node);
  15.             keyToNode.computeIfAbsent(node.key, k -> new LinkedList<ListNode>()).add(node);
  16.         }
  17.     }

  18.     private void insertBeforeTail(final ListNode node) {
  19.         node.prev = tail.prev;
  20.         node.next = tail;
  21.         tail.prev.next = node;
  22.         tail.prev = node;
  23.     }

  24.     public boolean hasNext() {
  25.         return head.next != tail;
  26.     }

  27.     public int next() {
  28.         if (head.next == tail) {
  29.             throw new NoSuchElementException();
  30.         }
  31.         head = head.next;
  32.         //remove node from lookup table
  33.         keyToNode.get(head.key).removeFirst();
  34.         return head.key;
  35.     }

  36.     /**
  37.      * Skip the value
  38.      *
  39.      * @param val
  40.      */
  41.     public void skip(final int val) {
  42.         //removeFirst is O(1) for LinkedList
  43.         final ListNode node = keyToNode.get(val).removeFirst();
  44.         //remove the node for the list
  45.         node.prev.next = node.next;
  46.         node.next.prev = node.prev;
  47.     }

  48.     private static class ListNode {
  49.         ListNode prev;
  50.         ListNode next;
  51.         int key;

  52.         public ListNode(final int key) {
  53.             this.key = key;
  54.         }

  55.         @Override
  56.         public String toString() {
  57.             return String.valueOf(key);
  58.         }
  59.     }
  60. }
复制代码

回复

使用道具 举报

🔗
zli_test 2019-1-28 16:54:44 | 只看该作者
全局:
[quote]zli_test 发表于 2019-1-28 00:53
  1. public class CustomIterator {
  2.     private ListNode head;
  3.     private fina ...[/quote]
  4. Unit test:
  5. [code]import static org.hamcrest.CoreMatchers.is;
  6. import static org.junit.Assert.assertThat;

  7. import java.util.Arrays;

  8. import org.junit.Test;

  9. public class CustomIteratorTest {
  10.     @Test
  11.     public void test() {
  12.         final CustomIterator iter = new CustomIterator(Arrays.asList(1, 2, 1, 3, 1, 4).iterator());
  13.         iter.skip(1);
  14.         iter.skip(1);
  15.         assertThat(iter.next(), is(2));
  16.         assertThat(iter.next(), is(3));
  17.         assertThat(iter.next(), is(1));
  18.     }
  19.    
  20.     @Test
  21.     public void test2() {
  22.         final CustomIterator iter = new CustomIterator(Arrays.asList(1, 2, 1, 3, 1, 4).iterator());
  23.         assertThat(iter.hasNext(), is(true));
  24.         assertThat(iter.next(), is(1));
  25.         iter.skip(1);
  26.         iter.skip(1);
  27.         assertThat(iter.next(), is(2));
  28.         assertThat(iter.next(), is(3));
  29.         assertThat(iter.next(), is(4));
  30.     }
  31. }
复制代码


回复

使用道具 举报

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

本版积分规则

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