cpongo

原创 2015年11月19日 18:12:22

翻译

<code class="hljs haskell has-numbering">给定一个链表,调换每两个相邻节点,并返回其头部。

例如,
给定 <span class="hljs-number">1</span>-><span class="hljs-number">2</span>-><span class="hljs-number">3</span>-><span class="hljs-number">4</span>, 你应该返回的链表是 <span class="hljs-number">2</span>-><span class="hljs-number">1</span>-><span class="hljs-number">4</span>-><span class="hljs-number">3</span>。

你的算法必须使用唯一不变的空间。

你也不能修改列表中的值,只有节点本身是可以改变的。</code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul>

原文

<code class="hljs applescript has-numbering">Give a linked <span class="hljs-type">list</span>, swap <span class="hljs-keyword">every</span> two adjacent nodes <span class="hljs-keyword">and</span> <span class="hljs-constant">return</span> <span class="hljs-keyword">its</span> head.

For example, 
Given <span class="hljs-number">1</span>-><span class="hljs-number">2</span>-><span class="hljs-number">3</span>-><span class="hljs-number">4</span>, you should <span class="hljs-constant">return</span> <span class="hljs-keyword">the</span> <span class="hljs-type">list</span> <span class="hljs-keyword">as</span> <span class="hljs-number">2</span>-><span class="hljs-number">1</span>-><span class="hljs-number">4</span>-><span class="hljs-number">3.</span>

Your algorithm should use only <span class="hljs-type">constant</span> <span class="hljs-constant">space</span>. 

You may <span class="hljs-keyword">not</span> modify <span class="hljs-keyword">the</span> values <span class="hljs-keyword">in</span> <span class="hljs-keyword">the</span> <span class="hljs-type">list</span>, only nodes itself can be changed.</code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li></ul>

分析

我们就以题目中给出的1,2,3,4作为示例,将其作为两部分

<code class="hljs brainfuck has-numbering"><span class="hljs-comment">1,2</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span> <span class="hljs-comment">3,4</span></code><ul style="display: block;" class="pre-numbering"><li>1</li></ul>

或者我画个图出来更加直观吧……

这里写图片描述

代码

<code class="hljs java has-numbering"><span class="hljs-javadoc">/**
 * Definition for singly-linked list.
 * struct ListNode {
 *    int val;
 *    ListNode* next;
 *    ListNode(int x): val(x), next(NULL) {}
 * };
 */</span>
class Solution {
<span class="hljs-keyword">public</span>:
    ListNode* <span class="hljs-title">swapPairs</span>(ListNode* head) {
        <span class="hljs-keyword">if</span>(head == NULL) <span class="hljs-keyword">return</span> NULL;
        <span class="hljs-keyword">if</span>(head->next == NULL) <span class="hljs-keyword">return</span> head;

        ListNode* temp = head->next;
        head->next = swapPairs(temp->next);
        temp->next = head;

        <span class="hljs-keyword">return</span> temp;
    }
};</code>
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)