zoukankan      html  css  js  c++  java
  • Leetcode 206——反转字符串

    分递归和非递归,代码如下:

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* reverseList(ListNode* head) 
        {
            //ListNode *pResult = reverseCoreRecursively(head);
            ListNode *pResult = reverseCoreLoop(head);
            return pResult;
        }
        
        ListNode* reverseCoreLoop(ListNode *pNode)
        {
            if (pNode == nullptr)
                return nullptr;
            
            ListNode *pNewHead = pNode;
            pNode = pNode->next;
            pNewHead->next = nullptr;
            while (pNode != nullptr)
            {
                ListNode *pTempNewHeadNode = pNode;            
                pNode = pNode->next;
                pTempNewHeadNode->next = pNewHead;
                pNewHead = pTempNewHeadNode;
            }
            
            return pNewHead;
        }
        
        
        
        ListNode* reverseCoreRecursively(ListNode* pNode)
        {
            if (pNode == nullptr)
                return nullptr;
            
            if (pNode->next == nullptr)    
                return pNode;
            
            ListNode *pCurNode = reverseCoreRecursively(pNode->next);
            ListNode *pTempNode = pCurNode;
            while(pTempNode->next != nullptr)
            {
                pTempNode = pTempNode->next;
            }
            pTempNode->next = pNode;
            pNode->next = nullptr;
        
            return pCurNode;
        }
    };

    感觉递归的代码还可以优化

  • 相关阅读:
    export和import实现模块化
    Net Core
    DockerCon 2016
    NET Core 构成体系
    Cloud Engine
    JVM内存结构
    Signalr
    Rabbit.Rpc
    遍历指定包名下所有的类(支持jar)(转)
    httpd的简单配置(转)
  • 原文地址:https://www.cnblogs.com/gwzz/p/9258387.html
Copyright © 2011-2022 走看看