我最近在hackerrank上注册了一个账号,这是我遇到的第十个问题。我花了一个小时才想出解决方案(我用纸和笔试了很多次),最后它通过了。在那之后,我看到了一些提交的答案,我的一些其他folks.Their代码与我的相比非常小,或者你认为我的答案也是可以的。我没有人可以问,所以我来这里...当我看到that.Can时,我觉得自己很傻,我以后会改进它吗??(如果你认为这是一个愚蠢的问题,请原谅我)
Node Reverse(Node head) {
Node prevNode = null;
Node NextNode = null;
Node m = head;
Node upComingNode = null;
Node temp = head;
if(head == null){
return head;
}
else{
while(temp!=null){
NextNode = temp.next;
temp.next = prevNode;
m.prev = upComingNode;
prevNode = temp;
upComingNode = prevNode.next;
m = temp;
temp = NextNode;
}
head = prevNode;
}
return head;
}发布于 2017-07-10 23:45:22
我不确定您使用的是哪种语言,但是为了反转一个双向链表,简而言之,您想要用每个节点交换您的next和prev节点。这可以很快完成,伪代码如下:
while(currNode != tail){
currNode.nextNode = tempNode
currNode.nextNode = currNode.prevNode
currNode.prevNode = tempNode
currNode = currNode.prevNode
}请注意,我们将下一个节点设置为前一个节点进行迭代,因为前一个节点实际上指向下一个节点,因为我们进行了切换。
https://stackoverflow.com/questions/45016136
复制相似问题