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

Uber电面-4sum

全局:

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

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

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

x
今天uber电面
问了三年规划5年目标...(`_′)ゞ
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
....
  1. class Solution {
  2.         // store index of pair
  3.         static class Pair {
  4.                 Integer[] eles;

  5.                 public Pair(int a, int b, int c, int d) {
  6.                         eles = new Integer[] { a, b, c, d };
  7.                         Arrays.sort(eles);
  8.                 }

  9.                 static boolean valid(int a, int b, int c, int d) {
  10.                         if (a == c || b == d || b == c)
  11.                                 return false;
  12.                         return true;
  13.                 }

  14.                 public int hashCode() {
  15.                         Integer ans = 2;
  16.                         for (int i : eles) {
  17.                                 ans += ans * i;
  18.                         }
  19.                         return ans;
  20.                 }

  21.                 public boolean equals(Object that) {
  22.                         if (!(that instanceof Pair))
  23.                                 return false;
  24.                         if (that == this)
  25.                                 return true;
  26.                         for (int i = 0; i < 4; i++) {
  27.                                 if (this.eles[i] != ((Pair) that).eles[i])
  28.                                         return false;
  29.                         }

  30.                         return true;
  31.                 }

  32.         }

  33.         public static List<List<Integer>> sum4(List<Integer> list, int target) {
  34.                 Collections.sort(list);
  35.                 List<List<Integer>> ans = new ArrayList<List<Integer>>();

  36.                 // Map <2sum, list of pairs>
  37.                 Map<Integer, List<List<Integer>>> map = new HashMap<Integer, List<List<Integer>>>();

  38.                 for (int i = 0; i < list.size(); i++) {
  39.                         for (int j = i + 1; j < list.size(); j++) {
  40.                                 int sum2 = list.get(i) + list.get(j);
  41.                                 List<Integer> pair = new ArrayList<Integer>();
  42.                                 pair.add(i);
  43.                                 pair.add(j);
  44.                                 if (map.containsKey(sum2)) {
  45.                                         map.get(sum2).add(pair);
  46.                                 } else {
  47.                                         List<List<Integer>> listofPair = new ArrayList<List<Integer>>();
  48.                                         listofPair.add(pair);
  49.                                         map.put(sum2, listofPair);
  50.                                 }
  51.                         }
  52.                 }

  53.                 Set<Pair> set = new HashSet<Pair>();
  54.                 for (int key : map.keySet()) {
  55.                         int anotherkey = target - key;
  56.                         if (anotherkey < key)
  57.                                 continue;
  58.                         if (map.containsKey(anotherkey)) {
  59.                                 for (List<Integer> firstValues : map.get(key)) {
  60.                                         int a = firstValues.get(0);
  61.                                         int b = firstValues.get(1);
  62.                                         for (List<Integer> secondValues : map.get(anotherkey)) {
  63.                                                 int c = secondValues.get(0);
  64.                                                 int d = secondValues.get(1);
  65.                                                 if (Pair.valid(a, b, c, d)) {
  66.                                                         Pair pair = new Pair(a, b, c, d);
  67.                                                         set.add(pair);

  68.                                                 }

  69.                                         }

  70.                                 }

  71.                         }
  72.                 }

  73.                 for (Pair p : set) {
  74.                         List<Integer> path = new ArrayList<Integer>();
  75.                         for (Integer ele : p.eles) {
  76.                                 path.add(list.get(ele));
  77.                         }
  78.                         ans.add(path);
  79.                 }
  80.                 return ans;
  81.         }

  82.         public static void main(String[] args) {
  83.                 ArrayList<String> strings = new ArrayList<String>();
  84.                 Integer[] numbers = new Integer[] { 4, 2, 6, 1, 5, 3 };
  85.                 List<Integer> list = Arrays.asList(numbers);
  86.                 System.out.println(sum4(list, 16));

  87.         }
  88. }
复制代码

评分

参与人数 4大米 +68 收起 理由
ymqytw + 3 感谢分享!
会编程的猪先生 + 5 谢谢你的介绍!
martin31hao + 10 感谢分享!
whdawn + 50

查看全部评分


上一篇:请教Uber一道经典面经题,Excel设计,主要请教follow up的内容
下一篇:10钟前google电面

本帖被以下淘专辑推荐:

推荐
likenisha 2015-11-29 06:02:40 | 只看该作者
全局:
我怎么觉得这个代码不是很对。。。。比如{1,2,3}, pair会是{1,2}{2,3}{1,3},但很明显这个array是没结果的,可是pair可能target等于7的时候有一个输出,似乎不太对
回复

使用道具 举报

推荐
 楼主| jaly50 2015-8-29 11:28:16 | 只看该作者
全局:
bluezebra 发表于 2015-8-29 11:09
这么良心的帖子没人顶?感谢楼主!

应该加分 XD


拿到onsite了 :)
回复

使用道具 举报

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

使用道具 举报

🔗
bluezebra 2015-8-29 11:09:05 | 只看该作者
全局:
这么良心的帖子没人顶?感谢楼主!
回复

使用道具 举报

🔗
jy_121 2015-8-29 11:45:34 | 只看该作者
全局:
恭喜楼主,好像之前跟CS61B的时候见过你的帖子。从O(n3)到O(n2)就是将一层的遍历换成hashmap吗
回复

使用道具 举报

🔗
wenqiang88 2015-8-29 11:52:49 | 只看该作者
全局:
如果array里面有重复元素的话,那么worst case 不止O(n^2)吧,因为map里的list会很长
回复

使用道具 举报

🔗
whdawn 2015-8-29 11:59:12 | 只看该作者
全局:
学长还在匹村等TOC吗~
回复

使用道具 举报

🔗
 楼主| jaly50 2015-8-29 13:10:00 | 只看该作者
全局:
wenqiang88 发表于 2015-8-29 11:52
如果array里面有重复元素的话,那么worst case 不止O(n^2)吧,因为map里的list会很长

嗯...worst case可能要n^4了...
回复

使用道具 举报

🔗
 楼主| jaly50 2015-8-29 13:10:36 | 只看该作者
全局:
whdawn 发表于 2015-8-29 11:59
学长还在匹村等TOC吗~

不是学长
不等TOC
骑驴找马
回复

使用道具 举报

🔗
whdawn 2015-8-29 13:22:56 | 只看该作者
全局:
jaly50 发表于 2015-8-29 13:10
不是学长
不等TOC
骑驴找马

那就是学姐了。。。我错了
回复

使用道具 举报

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

本版积分规则

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