传说中的谷歌招聘委员会成员之一,从幕后走出来,教你学系统设计!


一亩三分地论坛

 找回密码
 获取更多干活,快来注册
天天打游戏、照样领工资、还办H1B
这份工作你要不要?
把贵司招聘信息放这里
查看: 2070|回复: 19
收起左侧

yahoo面经

[复制链接] |试试Instant~ |关注本帖
wltchester 发表于 2016-11-18 03:26:58 | 显示全部楼层 |阅读模式

() @ - -  |

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

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

x
输入[3, -10, -2, -5, 10, 4, 5, -1, 10, 2, -4], 输出[3, 10, 4, 5, 10, 2, -10, -2, -5, -1, -4]。 要求是single iteration和in-place。

评分

1

查看全部评分

myqdkl 发表于 2016-11-18 03:37:11 | 显示全部楼层
这个是找规律吗,lz能说的再具体一点吗,谢谢
回复 支持 反对

使用道具 举报

catinclay 发表于 2016-11-18 04:02:11 | 显示全部楼层
myqdkl 发表于 2016-11-18 03:37.鏈枃鍘熷垱鑷1point3acres璁哄潧
这个是找规律吗,lz能说的再具体一点吗,谢谢

正的往左放 負的往右放
回复 支持 反对

使用道具 举报

 楼主| wltchester 发表于 2016-11-18 04:41:22 | 显示全部楼层
正的往左方,负的往右,还要保持相对顺序。
回复 支持 反对

使用道具 举报

小A要当码农 发表于 2016-11-18 04:52:47 | 显示全部楼层
是类似于冒泡排序的做法么。。。
回复 支持 反对

使用道具 举报

csushin1992 发表于 2016-11-18 06:53:06 | 显示全部楼层
Single Iteration...求解...
回复 支持 反对

使用道具 举报

raincoatrun 发表于 2016-11-18 06:53:36 | 显示全部楼层
two pointer两边往中间走,inplace replace
回复 支持 反对

使用道具 举报

buweiningshi86 发表于 2016-11-18 06:55:10 | 显示全部楼层
two pointer, 跟leetcode move zeros 类似,只是这个move的是负的
回复 支持 反对

使用道具 举报

csushin1992 发表于 2016-11-18 07:10:33 | 显示全部楼层
buweiningshi86 发表于 2016-11-18 06:55
two pointer, 跟leetcode move zeros 类似,只是这个move的是负的

使用move zeroes的方法不能保证移到后面的负数是有序的吧。
回复 支持 反对

使用道具 举报

csushin1992 发表于 2016-11-18 07:11:30 | 显示全部楼层
raincoatrun 发表于 2016-11-18 06:53
two pointer两边往中间走,inplace replace
. 1point 3acres 璁哄潧
这样不能保证后面的负数是有序的
回复 支持 反对

使用道具 举报

raincoatrun 发表于 2016-11-18 07:23:37 | 显示全部楼层
那就用index作为value,然后负数加个负号,bubble sort
回复 支持 反对

使用道具 举报

mayborin 发表于 2016-11-18 11:02:38 | 显示全部楼层
  1. public void re(int[] num){
  2.         if(num==null || num.length<2) return;
  3.         int i=0,j=1;
  4.     while(j<num.length){
  5.       if(num[i]>0) {i++;j++;}
  6.       else{//num[i] is negative, search for the next positive index. From 1point 3acres bbs
  7.         while(j<num.length&&num[j]<0) j++;
  8.         if(j<num.length){
  9.           int tmp=num[j];
  10.           for(int t=j;t>i;t--) num[t]=num[t-1];
  11.           num[i]=tmp;
  12.           i++;
  13.           j++;.鏈枃鍘熷垱鑷1point3acres璁哄潧
  14.         }
  15.     }
  16.   }
  17. }
复制代码
回复 支持 反对

使用道具 举报

csushin1992 发表于 2016-11-18 11:51:51 | 显示全部楼层
raincoatrun 发表于 2016-11-18 07:23
那就用index作为value,然后负数加个负号,bubble sort
.鏈枃鍘熷垱鑷1point3acres璁哄潧
这样子似乎也不行。. from: 1point3acres.com/bbs
1. 要求single iteration
2. Index作为Value,负数加上负号,那么会有一边是逆序的,如果AscendingOrder,那么负数部分逆序,如果是DescendingOrder,那么正数部分逆序。
回复 支持 反对

使用道具 举报

coldrainy 发表于 2016-11-20 08:03:26 | 显示全部楼层
这题是color sort 变型吧. LC 75.
回复 支持 反对

使用道具 举报

wangxinbo1123 发表于 2017-1-13 08:00:21 | 显示全部楼层
Bubble sort idea
  1. void part(vector<int>& vec) {
  2.     for(int j = 0; j < vec.size(); j++) {
  3.         if(vec[j] > 0) {.鐣欏璁哄潧-涓浜-涓夊垎鍦
  4.             for(int i = j; i-1 >= 0 && vec[i-1] < 0; i--)
  5.                 swap(vec[i-1], vec[i]);
  6.         }
  7.     }
  8. }
复制代码
回复 支持 反对

使用道具 举报

xwjabc 发表于 2017-2-22 07:48:36 | 显示全部楼层
bubble sort: O(n^2)
queue: O(n) scan data once
回复 支持 反对

使用道具 举报

zzpnm003 发表于 2017-3-11 06:31:22 | 显示全部楼层

这pass了多少遍?
回复 支持 反对

使用道具 举报

zzpnm003 发表于 2017-3-11 06:32:26 | 显示全部楼层
这题要不就得多次,要不就得加额外存储空间,应该是加空间的意思吧。

补充内容 (2017-3-11 06:51):
这题 o(n) time, o(1)space不可能,理论上不可能。
回复 支持 反对

使用道具 举报

shiloh00 发表于 2017-3-14 03:26:50 | 显示全部楼层
zzpnm003 发表于 2017-3-11 06:32
这题要不就得多次,要不就得加额外存储空间,应该是加空间的意思吧。

补充内容 (2017-3-11 06:51):
. 1point 3acres 璁哄潧
为什么呢?我觉得two pointer然后像sort color那个方法一样就可以了啊
回复 支持 反对

使用道具 举报

zzpnm003 发表于 2017-3-14 09:52:27 | 显示全部楼层
shiloh00 发表于 2017-3-14 03:26
为什么呢?我觉得two pointer然后像sort color那个方法一样就可以了啊

sort color 是array, 可以random access. 而且你要不就是比较排序nlog(n),要不额外空间降时间。这里要求o(1)的空间。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

custom counter

GMT+8, 2017-9-23 10:35

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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