Python版本
class Solution:
def reverseBetween(self , head , m , n ):
# write code here
res=[]
while head:
res.append(head.val)//此处理论可以保存head,但实际会超时,此题目不太严谨,仅仅通过交换节点的val,就能通过
head=head.next //测试案例,而题目本意,是反转区间节点而不是反转val值
res=res[0:m-1]+res[m-1:n][::-1]+res[n:]
first=ListNode(0)
head1=first
for i in res:
temp=ListNode(i)
head1.next=temp
head1=temp
return first.nextjava版本
import java.util.*;
import java.util.Iterator;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param head ListNode类
* @param m int整型
* @param n int整型
* @return ListNode类
*/
public ListNode reverseBetween (ListNode head, int m, int n) {
// write code here
List<Integer> list=new ArrayList<>();
ListNode head1=head;
while(head1!=null){
list.add(head1.val);
head1=head1.next;
}
List<Integer> tt=new ArrayList<>();
tt.addAll(list.subList(0,m-1));
tt.addAll(rev(list.subList(m-1,n)));
tt.addAll(list.subList(n,list.size()));
Iterator iter=list.iterator();
ListNode first=new ListNode(0);
ListNode head2=first;
while(iter.hasNext()){
ListNode temp=new ListNode((int)iter.next());
head2.next=temp;
head2=temp;
}
return first.next;
}
public static List rev(List list){
Collections.reverse(list);
return list;
}
}
京公网安备 11010502036488号