2025年10月11日 星期六

[744] Find Smallest Letter Greater Than Target

寫完還自以為偏順利,然後發現我比別人多好大一串code
難怪我面試都沒過呢哈哈哈哈哈(奔入雨中)
char nextGreatestLetter(char* letters, int lettersSize, char target) {
int l=0,r = lettersSize-1;
int mid = 0;
int tar= target -'a';
while (l<=r)
{
mid = (l+r)/2;
if (letters[mid]-'a'==tar)
{
while (mid<lettersSize && letters[mid]-'a'==tar)
mid++;
if (mid==lettersSize)
return letters[0];
else
return letters[mid];
}
else if (letters[mid]-'a'> tar)
r=mid-1;
else
l=mid+1;
}
//printf(" %d %d %d , ?? %d\n", l, r, tar, letters[lettersSize-1]-'a');
if (letters[lettersSize-1]-'a' < tar)
return letters[0];
return letters[r+1];
}


修一修大概是這樣 -- 但我還是看不懂為什麼別人可以在離開while 之後用
return letters[l%lettersSize];
來做....? 我可以不要懂嗎哈哈哈(被面試官毆飛)

char nextGreatestLetter(char* letters, int lettersSize, char target) {
int l=0,r = lettersSize-1;
int mid = 0;
int tar= target -'a';
while (l<=r)
{
mid = (l+r)/2;
if (letters[mid]-'a' <= tar)
l=mid+1;
else //if (letters[mid]-'a'> tar)
r=mid-1;
}
if (l>=lettersSize)
return letters[0];
return letters[r+1];
}

沒有留言:

張貼留言