Re: Microsoft Interview Question

看板Oversea_Job (海外工作)作者時間17年前 (2008/01/27 15:18), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
※ 引述《Baudelaire.bbs@ptt.cc (Sunnyvale)》之銘言: : ※ 引述《Baudelaire (Sunnyvale)》之銘言: : 基本上算是binary search的變形: : public static int FindSortedArrayRotation(int array[]) { : int begin = 0, end = array.length - 1; : while (end-begin>1) { : if (array[begin] > array[(begin + end) / 2]) { : end = (begin + end) / 2; : } else if (array[(begin + end) / 2] > array[end]) { : begin = (begin + end) / 2; : } else { : return (begin+end)/2+1; : } : } : return end; : } 我想方向是正確的, 但是如果 X = 0 的話,似乎會有問題..... 我精簡你的版本,在最後return前確定是真的rotate過. public static int FindSortedArrayRotation(int array[]) { int i = 0, j = array.length -1; while(j-i > 1) { if(array[(i+j)/2] > array[i]) i = (i+j)/2; else j = (i+j)/2; } if(array[j] < array[i]) return j; // Make sure array did rotate. else return 0 ; 歡迎指正 -- ※ 發信站: 批踢踢參(ptt3.cc) ◆ From: 168.7.230.23
文章代碼(AID): #17d31B00 (Oversea_Job)
文章代碼(AID): #17d31B00 (Oversea_Job)