交换LinkedList的两个节点



**您得到了一个整数的单链列表,以及两个整数"i"one_answers"j"交换位于"第i个"one_answers"第j个"位置的节点。

我的代码如下,你能建议一种有效的替代方法吗?**

public static LinkedListNode<Integer> swapNodes(LinkedListNode<Integer> head, int i, int j) {
//Your code goes here
LinkedListNode<Integer> temp=head;
LinkedListNode<Integer> temp1=head;
LinkedListNode<Integer> tempo=new LinkedListNode<Integer>(0);
int beg=0, end=0;

for(int x=0;x<i;x++)
{      
temp=temp.next;

}
for(int y=0;y<j;y++)
{
temp1=temp1.next;

}

tempo.data= temp.data;
temp.data= temp1.data;
temp1.data=tempo.data;


return head;

}
}

为了提高效率,可以删除其中一个for循环。首先添加另一个名为LinkedListNode<Integer> t=head;的变量,然后您可以首先在i和j之间进行检查,看看哪个更大,并为此执行for循环。

LinkedListNode<Integer> t=head;
int counter = (i > j) ? i : j;
for(int x=0;x<counter;x++)
{      
t = t.next;
if(counter == i-1){   
temp=t.next;
} 
if(counter == j-1){
temp1=t.next;
}       
}

相关内容

  • 没有找到相关文章

最新更新