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

谷歌一轮电面面经

全局:

2019(10-12月) 码农类General 硕士 全职@google - 内推 - 技术电面  | | Other | 应届毕业生

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

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

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

评分

参与人数 7大米 +23 收起 理由
tjuwdz95 + 5 给你点个赞!
2018moment + 3 很有用的信息!
xdzcz + 3 很有用的信息!
konve123 + 5 很有用的信息!
woshizbw121 + 3 很有用的信息!

查看全部评分


上一篇:高盛达拉斯intern Timeline + 面筋
下一篇:vmware 店面
全局:
找中位数不应该是quick select更快吗?
回复

使用道具 举报

🔗
dengzeyu147 2018-11-18 00:52:21 | 只看该作者
全局:
  1. public static float findMedian(int []arr){
  2.         if(arr.length %2 != 0){
  3.             return odd(arr, 0, arr.length-1);
  4.         }else{
  5.             return even(arr, 0, arr.length-1);
  6.         }
  7.     }
  8.     public static float odd(int []arr,int start ,int end){
  9.         int pivot = Partition(arr,start,end);
  10.         if(start < arr.length/2){
  11.             return odd(arr, pivot+1, end);
  12.         }
  13.         if(start > arr.length/2){
  14.             return odd(arr, start, pivot-1);
  15.         }else return arr[pivot];
  16.     }
  17.     public static float even(int []arr,int start ,int end){
  18.         if(start > end){
  19.             return (arr[arr.length/2]+arr[arr.length/2-1])/2;
  20.         }
  21.         int pivot = Partition(arr,start,end);
  22.         if(start <= arr.length/2-1) {
  23.             return even(arr, pivot + 1, end);
  24.         } else{
  25.             return odd(arr, start, pivot-1);
  26.         }
  27.     }
  28.     public void quicksort(int []arr,int start ,int end){
  29.         if(start < end){
  30.             int index = Partition(arr,start,end);
  31.             quicksort(arr, start, index-1);
  32.             quicksort(arr,index, end-1);
  33.         }
  34.     }
  35.     public static int Partition(int []arr, int start, int end){
  36.         int pivot = arr[start];
  37.         while(start < end){
  38.             while(start < end && pivot < arr[end]  ){
  39.                 end--;
  40.             }
  41.             arr[start] = arr[end];
  42.             while( start < end && arr[start]<= pivot ){
  43.                 start++;
  44.             }
  45.             arr[end] = arr[start];
  46.         }
  47.         arr[start] = pivot;
  48.         return start;
  49.     }
复制代码

补充内容 (2018-11-18 00:52):
大概这样?lz
回复

使用道具 举报

🔗
tjuwdz95 2018-11-19 13:23:39 | 只看该作者
全局:
请问楼主一开始用什么方法做的呢?
回复

使用道具 举报

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

本版积分规则

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