剑指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个节点
标签:dummy,ListNode,val,Offer,int,next,链表,算法 来源: https://www.cnblogs.com/anxiao/p/15810262.html