Java教程

剑指Offer算法题

本文主要是介绍剑指Offer算法题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、链表

1、从尾到头打印链表

使用栈先进后出

class Solution {
    public int[] reversePrint(ListNode head) {
        //将链表数据依次放到栈中
        Stack<ListNode> stack = new Stack<ListNode>();
        ListNode p= head;
        while (p!= null) {
            stack.push(p);
            p= p.next;
        }

        //将栈中的数弹出放到数组中
        int size = stack.size();
        int[] print = new int[size];
        for (int i = 0; i < size; i++) {
            print[i] = stack.pop().val;
        }
        return print;
    }
}

2、删除链表的节点

class Solution {
    public ListNode deleteNode(ListNode head, int val) {
        //删除时添加dummy头节点,方便修改头节点
        ListNode dummy = new ListNode(-1);
        dummy.next=head;
        ListNode p=dummy;
        //找到值为val的节点
        while(p.next.val!=val){
            p=p.next;
        }
        //执行删除操作
        p.next=p.next.next;
        //返回dummy的下个节点
        return dummy.next;
        
    }
}

3、链表中倒数第k个节点

 

这篇关于剑指Offer算法题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!