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

11/09 Google Onsite

🔗
GatorAM 2016-1-23 02:54:48 | 只看该作者
全局:
那第二题,如果Input 是 "FooBarFab", 那满不满足 Pattern : "FBF" ?


回复

使用道具 举报

🔗
 楼主| Nero_hu 2016-1-23 03:03:42 | 只看该作者
全局:
GatorAM 发表于 2016-1-23 02:54
那第二题,如果Input 是 "FooBarFab", 那满不满足 Pattern : "FBF" ?

满足 字数...
回复

使用道具 举报

🔗
GatorAM 2016-1-23 05:54:23 | 只看该作者
全局:
那就是说input删除一些字母成为pattern就成,对吧?
回复

使用道具 举报

🔗
 楼主| Nero_hu 2016-1-23 06:15:29 | 只看该作者
全局:
GatorAM 发表于 2016-1-23 05:54
那就是说input删除一些字母成为pattern就成,对吧?

也可以这么理解吧
回复

使用道具 举报

🔗
GatorAM 2016-1-23 11:12:52 | 只看该作者
全局:
Nero_hu 发表于 2016-1-23 06:15
也可以这么理解吧

Thx     
回复

使用道具 举报

全局:
写了最后一题2K WINDOW的代码

  1. public class QuickSelect {

  2.     public static List<Integer> topK(int[] nums, int k) {
  3.         List<Integer> result = new ArrayList<Integer>();
  4.         if (nums == null || nums.length < k) return result;
  5.         int n = nums.length;
  6.         int i = 0;
  7.         for ( ; i < k; i++) result.add(nums[i]);
  8.         while (i < n) {
  9.             int j = 0;
  10.             for (; j < k && i + j < n; j++) {
  11.                 result.add(nums[i + j]);
  12.             }
  13.             quickSelect(result, k);
  14.             i += j;
  15.         }
  16.         return result;
  17.     }
  18.    
  19.     private static void quickSelect(List<Integer> list, int k) {
  20.         selectHelper(list, 0, list.size() - 1, k);
  21.         List<Integer> rest = new ArrayList<Integer>();
  22.         for (int i = k; i < list.size(); i++) rest.add(list.get(i));
  23.         list.removeAll(rest);
  24.     }
  25.    
  26.     private static void selectHelper(List<Integer> list, int start, int end, int k) {
  27.         int randomIndex = start + (int)(Math.random() * (end - start + 1));
  28.         swap(list, end, randomIndex);
  29.         int i = start - 1, j = start, pivot = list.get(end);
  30.         while (j < end) {
  31.             if (list.get(j) >= pivot) {
  32.                 swap(list, ++i, j);
  33.             }
  34.             j++;
  35.         }
  36.         swap(list, ++i, end);
  37.         int leftSize = i - start + 1;
  38.         if (leftSize == k) return;
  39.         if (leftSize < k) selectHelper(list, i + 1, end, k - leftSize);
  40.         else selectHelper(list, start, i - 1, k);
  41.     }
  42.    
  43.     private static void swap(List<Integer> list, int i, int j) {
  44.         int temp = list.get(i);
  45.         list.set(i, list.get(j));
  46.         list.set(j, temp);
  47.     }
  48.    
  49.     public static void main(String[] args) {
  50.         int[] nums = {9,0,3,2,8,1,2,3,4,5,6,7};
  51.         List<Integer> list = topK(nums, 3);
  52.         for (int d : list) {
  53.             System.out.print(d + " ");
  54.         }
  55.         System.out.println();
  56.             
  57.     }
  58. }
复制代码
回复

使用道具 举报

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

本版积分规则

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