力扣-数据结构-2【算法学习day.73】
前言
###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!
习题
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;
}
}
后言
上面是力扣数据结构相关,下一篇是其他的习题,希望有所帮助,一同进步,共勉!