2023年7月25日 星期二

[2130] Maximum Twin Sum of a Linked List

也是無痛PASS啦
不過好像有點蠢?! XD
想說先找到中間,然後再前半後半各自存在sum array裡面然後找出max
這樣寫還要注意index 呢也不是很容易啊(撥瀏海)
但是好吧,天才們的作法是在找到middle 之後順便reverse 其中一段,
看你是要反轉前半還是反轉後半,總之把其中一個反轉完以後,
就可以逐步相加,若是大於max 則更新max。好了就是降 XD

/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
int pairSum(struct ListNode* head){
struct ListNode* slow;
struct ListNode* fast;
slow=head;
fast=head;
int count=0;
while (fast!= NULL)
{
count++;
slow=slow->next;
fast=fast->next;
fast=fast->next;
}
int *sum=calloc(count, sizeof(int));
fast=head;
int idx=0;
while(slow!=NULL)
{
sum[idx]+=fast->val;
sum[count-idx-1]+=slow->val;
idx++;
slow=slow->next;
fast=fast->next;
}
int max=0;
for (int i=0;i < count;i++)
{
if (sum[i]>max)
max=sum[i];
}
return max;
}


沒有留言:

張貼留言