题解 | #链表内指定区间反转#

链表内指定区间反转

https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c

public ListNode reverseBetween (ListNode head, int m, int n) {
        if(head==null){
            return null;
        }
        List<ListNode> list=new ArrayList<>();
        list.add(head);
        while (head.next != null){
            list.add(head.next);
            head=head.next;
        }
        List<ListNode> tempList=new ArrayList<>();
        for(int i = m-1; i < n;i++){
            tempList.add(list.get(i));
        }
        for(int i = tempList.size()-1;i>0;i--){
            tempList.get(i).next=tempList.get(i-1);
            if(i-1==0){
                tempList.get(i-1).next=null;
            }
        }
        ListNode listNode = tempList.get(tempList.size() - 1);
        tempList.clear();
        tempList.add(listNode);
        while (listNode.next != null){
            tempList.add(listNode.next);
            listNode=listNode.next;
        }
        List<ListNode> temp2List=new ArrayList<>();
        for(int i=0;i<list.size();i++){
            if(i < m-1){
                temp2List.add(list.get(i));
            }
        }
        temp2List.addAll(tempList);
        for(int i=0;i<list.size();i++){
            if(i > n-1){
                temp2List.add(list.get(i));
            }
        }
        for(int i =0;i< temp2List.size();i++){
            temp2List.get(i).next=temp2List.get(i+1<temp2List.size()?i+1:i);
            if(i+1==temp2List.size()){
                temp2List.get(i).next=null;
            }
        }
        return temp2List.get(0);
    }


全部评论

相关推荐

03-05 12:52
吉林大学 Java
挣K存W养DOG:他的价值在于把他家里积攒的财富回馈给社会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务