题解 | #牛群的能量值#
牛群的能量值
https://www.nowcoder.com/practice/fc49a20f47ac431981ef17aee6bd7d15
按两个链表的每一位相加取余数得到结果相应位的值,判断是否有进位,如果有的话就加到下一位上,如果存在某个链表为空的情况,则使用值为0的节点来进入下一轮相加取余的操作,最后返回得到的链表。
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { private: int plus = 0; ListNode* result = new ListNode(0); ListNode* current; int count = 0; public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param l1 ListNode类 * @param l2 ListNode类 * @return ListNode类 */ ListNode* addEnergyValues(ListNode* l1, ListNode* l2) { // write code here calculateResult(l1, l2); return result; } void calculateResult(ListNode* l1, ListNode* l2) { int sum = l1->val + l2->val + plus; auto temp = new ListNode(0); if(count == 0) { current = result; } current->val = sum % 10; if(sum / 10 == 1) { plus = 1; } else { plus = 0; } if(l1->next == nullptr && l2->next == nullptr) { if(plus == 1) { temp->val = 1; current->next = temp; } return; } current->next = temp; current = temp; count++; if(l1->next == nullptr) { calculateResult(new ListNode(0), l2->next); } else if(l2->next == nullptr) { calculateResult(l1->next, new ListNode(0)); } else { calculateResult(l1->next, l2->next); } } };
中等(算法题解) 文章被收录于专栏
中等难度题目