估且不論執行速度
竟然比之前寫的都快都正確!(是和我個人比起來Orz)
感動 !!!!!!
就是說給一個array, 還有一個長度k的window
當這個window由左至右滑動時
記錄下當時window裡的最大值
回傳這組最大值.
Sliding Window Maximum
/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
int* maxSlidingWindow(int* nums, int numsSize, int k, int* returnSize) {
if(nums == NULL || numsSize==0)
return NULL;
*returnSize = (numsSize -k)+1;
int* ret = malloc(sizeof(int)*(*returnSize));
int max=0;
for(int i=0;i<(*returnSize);i++)
{
max=nums[i];
for (int s=i;s<i+k;s++)
{
if(nums[s]> max)
max = nums[s];
}
ret[i]=max;
}
return ret;
}
據說正解是什麼Sliding Window Minimum / Monotonic Queue的
但不知道為什麼現在無法思考 囧
睡前再來冥想看它是怎麼回事
先降~(揮手下降)
沒有留言:
張貼留言