(原創(chuàng), 第一次發(fā)表于: http://yonghaowu.github.io/2016/10/25/GoogleJapanInterview/)
國內(nèi)大三下學(xué)生,投了Google Japan 求RP宛逗, 感覺是跪了寞钥。
此外奈惑,求大神們內(nèi)推吭净,郵箱christopherwuy at gmail.com
簡介: C = Go > C++ = PHP > Python = R
Contributor of WineHQ, had sent more than 50 patches about VC++ runtime(
msvcr/msvcp). Some of them are the implementation of tr2::Filesystem
Library, tests of tr2::Threads and implementation of complex istream and
ostream::operator.
See http://goo.gl/Rn8eaW
Accepted by Google Summer Of Code 2015, project is implementing Filesystem
functions from tr2 namespace on Wine.
我的簡歷在LinkedIn:https://www.linkedin.com/in/yonghaohu
原題:https://leetcode.com/problems/wiggle-sort-ii/
一上來就是問題,可惜沒有刷到這個題目, 一個數(shù)組肴甸,排序成這樣x0 < x1 > x2 < x3 > < > <
然后我就分析寂殉,make sure understand the question,
然后說能不能用method like insertion sort原在, 他說make sense
然后我用插入排序的思想跑了一遍友扰, 然后是可以work的
然后問我時間復(fù)雜度,我最好最壞平均都分析了:
best time: On
worst: On^2
time complexity: O(n^2)
n is the size of array
然后問我有沒有辦法優(yōu)化庶柿。村怪。我一直嘗試用了幾個方法,但是都不行浮庐,最后他舉例子甚负,
提示了一下
5 < 7 > 5 < 7 > 5 < 7 > 6
然后排序后 ,提醒我有什么規(guī)律审残,我分析出最后兩個數(shù)可以交換
然后他問我為什么可以交換成立
于是我重回一些例子腊敲,分析了一下,中間有一點跑偏了维苔,我立馬問他,what is our
question.
然后他說懂昂, 是為什么交換可以成立有什么規(guī)律介时。
最后分析出了奇數(shù),偶數(shù)下凌彬, 可以比較最后兩個數(shù)沸柔,然后交換不
最后我說寫pseducode, 他說好铲敛。
然后就寫褐澎, 在寫的時候已經(jīng)比較正式,就是比較了是否為空數(shù)組伐蒋,
而且swap可以不做用其他方法工三,等等
寫完了他就說沒有時間了,結(jié)束
偽代碼是這樣的:
if(nums.size())
....
vector<int> new_array;
new_aray.push_back(nums[0]);
if(size > 1) {
if(num[1] > num[0])
push_back(num[1]);
else
inserttobegin(num[1]);
}
for(int i=2;i<n先鱼; ++i)
{
if(i%2 == 0) //i&1 {
if(new_array[i-1] > a[i]) {
puish_back(a[i]);
swap(a[i-1], a[i]);
/*
int tmp = a[i-1]俭正;
a[i-1] = a[i];
a[i] = tmp;
*/
}else {
push_back(a[i];
}
}else {
if(new_array[i-1] < a[i]) {
push_bak(a[i];
swap(a[i..);
}else{
xx
}
}
}