前言
###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!
习题
1.反转链表II
题目链接:92. 反转链表 II - 力扣(LeetCode)
题面:
分析:可以先把要反转的数存入数组,通过插入和删除的思路手动维护反转
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode reverseBetween(ListNode head, int left, int right) {int[] arr = new int[right-left+1];int index = 1;int count = right-left;for(ListNode i = head;i!=null&&index<=right;i = i.next){if(index>=left){arr[count--] = i.val;}index++;}ListNode fhead = new ListNode();fhead.next = head;index = 1;ListNode pre = fhead;count = 0;for(ListNode i = head;i!=null;i = i.next){if(index>=left&&index<=right){ListNode node = new ListNode(arr[count++]);pre.next = node;pre = node;}else if(index<left){pre = i;}else{pre.next = i;break;}index++;}return fhead.next;}
}
后言
上面是力扣数据结构相关,下一篇是其他的习题,希望有所帮助,一同进步,共勉!