您的位置:首页 > 编程语言 > Go语言

cpongo

2015-11-19 18:12 429 查看

翻译

<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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: