逆向思维

链表中倒数第k个结点

http://www.nowcoder.com/questionTerminal/886370fe658f41b498d40fb34ae76ff9



## 倒数变正数

```cpp
/**
 * struct ListNode {
 *    int val;
 *    struct ListNode *next;
 *    ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param pHead ListNode类 
     * @param k int整型 
     * @return ListNode类
     */
    ListNode* FindKthToTail(ListNode* pHead, int k) {
        // write code here
        int NodeSum=0;
        ListNode * temp=pHead;
        while( nullptr!=temp )
        {
            ++NodeSum;
            temp=temp->next;
        }
        
        if( k>NodeSum )
        {
            return nullptr;
        }
        
        int FindNum=NodeSum-k;
        int num=0;
        while( nullptr!=pHead )
        {
            if( num==FindNum )
            {
                return pHead;
            }
            pHead=pHead->next;
            ++num;
        }
        
        return pHead;//给牛客吃的
        
    }
};

```


## 二、另一个通不过的解法
- 本来想先『反转链表』,然后正数过去,但是,题目要求返回的链表不仅仅是链表地址,还有后续的那个本身的结构

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务