题解 | #合并两群能量值#
合并两群能量值
https://www.nowcoder.com/practice/d728938f66ac44b5923d4f2e185667ec
考察知识点:链表
题目分析:通过判断两个链表的值,依次按照两个链表当前的值的大小赋值,将两个链表重新组成新的链表,并输出新的链表
采用的编程语言:C
完整的编码代码:如下所示
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param l1 ListNode类 * @param l2 ListNode类 * @return ListNode类 */ #include <time.h> struct ListNode* mergeEnergyValues(struct ListNode* l1, struct ListNode* l2 ) { struct ListNode *tmp_head1 = l1, *tmp_head2 = l2; struct ListNode* tmp = NULL, *ret_head = NULL; while (1) { if (tmp_head1 == NULL || tmp_head2 == NULL) { // 但有某条链表遍历结束,就可以结束循环了 if (tmp != NULL) { if (tmp_head1 == NULL) // 当时l1链表遍历结束了,就表明l2链表可能还有成员,可以直接把l2没有遍历完的成员拼接给新的链表 tmp->next = tmp_head2; else // 一样的,将l1的成员拼接给新的链表 tmp->next = tmp_head1; } else { if (tmp_head1 == NULL) // 如果新的链表没有初始化,就表明输入的链表中有空链表 ret_head = tmp_head2; // 如果l1链表是空链表的话,输出的链表就可以直接是l2 else ret_head = tmp_head1; // l2链表为空时,直接输出l1链表 } break; } if (tmp_head1->val > tmp_head2->val) { // 如果当前成员1比成员2大时,就将成员1的值赋值给新链表 if (tmp == NULL) { // 如果新链表没有初始化,就给新连进行初始化 tmp = tmp_head1; ret_head = tmp_head1; // 标记新链表的链表头 } else { tmp->next = tmp_head1; // 新链表已经初始化了,那就把当前的值赋值给tmp的next指针 tmp = tmp->next; // 更新新链表的当前值 } tmp_head1 = tmp_head1->next; // 更新链表1的当前值 } else { if (tmp == NULL) { tmp = tmp_head2; ret_head = tmp_head2; } else { tmp->next = tmp_head2; tmp = tmp->next; } tmp_head2 = tmp_head2->next; } } return ret_head; }
面试高频TOP202解析 文章被收录于专栏
采用Java,C,Python等方法去解答面试高频TOP202题目,