zoukankan      html  css  js  c++  java
  • 剑指OFFER 反转链表

    剑指OFFER 反转链表

    分析

    在原来的链表上进行反转空间复杂度O(1),稍加思考可知道最少需要三个指针,那么先处理常规的情况(结点数大于等于3个),其中该情况又要分别处理头中尾三种情况

    最后慢慢处理特殊情况(结点数1个,结点数2个),然后写出代码

    /*
    struct ListNode {
    	int val;
    	struct ListNode *next;
    	ListNode(int x) :
    			val(x), next(NULL) {
    	}
    };*/
    class Solution {
    public:
        ListNode* ReverseList(ListNode* pHead) {
            if(pHead == NULL)return NULL;
            ListNode* node1 = pHead;
            ListNode* node2 = pHead->next;
            if(node2==NULL){
                return node1;
            }
            
            ListNode* node3 = pHead->next->next;
            if(node3==NULL){
                node2->next = node1;
                node1->next = NULL;
                return node2;
            }
            
    
            node1->next = NULL;
            node2->next = node1;
            
            //进入下一个状态
            node1 = node2;
            node2 = node3;
            node3 = node3->next;
            while(node3 != NULL){
                node2->next = node1;
                
                //进入下一个状态
                node1 = node2;
                node2 = node3;
                node3 = node3->next;
            }
            node2->next = node1;
            
            return node2;
        }
    };
    

    总结

    头脑要保持清醒,指针不要弄混了

  • 相关阅读:
    基数排序
    阅读笔记
    构建之法阅读笔记
    找水王续
    单元测试
    个人总结
    表单整数的校验问题
    HTML 表格的书写方式:
    rgba兼容IE系列
    "position:relative"在IE中的Bug
  • 原文地址:https://www.cnblogs.com/virgildevil/p/12233765.html
Copyright © 2011-2022 走看看