力扣_剑指Offer_个人题解

day02

剑指 Offer 06. 从尾到头打印链表

题目描述:

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

示例 1:

输入:head = [1,3,2]
输出:[2,3,1]

限制:

0 <= 链表长度 <= 10000

题解:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    int[]arr=new int[10000];
    int[]arr1;
    int i=0,count=0,k=0;
    public int[] reversePrint(ListNode head) {
        while(head!=null){
            arr[i++]=head.val;
            count++;
            head=head.next;
        }
        arr1=new int[count];
        for(int j=count-1;j>=0;j--){
            arr1[k++]=arr[j];
        }
        return arr1;
    }
}

 

剑指 Offer 24. 反转链表

 

题目描述:

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

 

示例:

 

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

 

限制:

 

0 <= 节点个数 <= 5000

题解:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    ListNode l=null;
    ListNode ll=null;
    int i=0;
    int[]arr=new int[5000];
    public ListNode reverseList(ListNode head) {
        while(head!=null){
            //temp=head;
            arr[i++]=head.val;
            //System.out.println(arr[i]);
            head=head.next;
            //head.next=temp;
        }
        //System.out.println(i);
        for(int j=i-1;j>=0;j--){
            if(l==null){
                l=new ListNode(arr[j]);
                ll=l;
            }
            else{
                ll.next=new ListNode(arr[j]);
                ll=ll.next;
            }
        }
        return l;
    }
}

 

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

 

posted @ 2022-10-19 22:10  林同学的博客  阅读(26)  评论(0)    收藏  举报