zoukankan      html  css  js  c++  java
  • 题目:两数相加(C++)

    两数相加我写出的代码如下

    static const auto io_speed_up = []()
    {
        std::ios::sync_with_stdio(false);
        cin.tie(nullptr);
        return 0;
    }();
    
    class Solution {
    public:
        ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
            bool carry = false;
            ListNode* l3 = nullptr;
            ListNode* head = nullptr;
            ListNode* tail = nullptr;
    
            tail = head = new ListNode{l1->val + l2->val};
            if (head->val > 9)
            {
                head->val -= 10;
                carry = true;
            }
            l1 = l1->next;
            l2 = l2->next;
    
            while (l1 || l2 )
            {
                if (l1  && l2 )
                {
                    l3 = new ListNode{l1->val + l2->val};
                    l1 = l1->next;
                    l2 = l2->next;
                }
                else if (l1 )
                {
                    l3 = new ListNode{l1->val};
                    l1 = l1->next;
                }
                else
                {
                    l3 = new ListNode{l2->val};
                    l2 = l2->next;
                }
                if (carry)
                {
                    ++l3->val;
                    carry = false;
                }
                if (l3->val > 9)
                {
                    l3->val -= 10;
                    carry = true;
                }
    
                tail->next = l3;
                tail = l3;
            }
            if (carry)
            {
                l3 = new ListNode{1};
                tail->next = l3;
                tail = l3;
            }
            return head;
        }
    };

    在提交后发现并不是最优解,跑去看了看最优解,得出原因:可能是我写的循环中包含分支太多,导致一次循环时间超过了最优解中的两次循环。

    由此可见在写C++代码中要考虑到if语句对于现代CPU速度的影响。

  • 相关阅读:
    附加作业
    个人总结
    wordcount
    vs2013安装及测试
    结对作业电梯调度问题
    阅读下面程序,请回答如下问题:
    补作业:随机生成二元四则运算
    软件工程的认识
    结对编程完结
    结对编程加团队编程
  • 原文地址:https://www.cnblogs.com/change4587/p/9142900.html
Copyright © 2011-2022 走看看