zoukankan      html  css  js  c++  java
  • 2020年3月16日算法练习

     代码如下

    package com.qyx.test;
    public
    class removeListNodeRev { /** * 删除单向链表中的倒数第n个链表 * 使用双指针算法,可以实现一次遍历即可删除 * 方案如下: * 第一个节点先走了n+1步,第二个节点停着,那么他们两个就差了n+1步, * 然后进行遍历,直到第一个节点遍历到尾部,第二个节点遍历的位置距离尾部就是n+1; * 因为在之后的移动中,他们是一起移动的 */ public ListNode removeNthFromEnd(ListNode head, int n) { ListNode dummy=new ListNode(0); dummy.next=head; ListNode first=dummy; ListNode second=dummy; for(int i=1;i<=n+1;i++) { first=first.next; } while(first!=null) { first.next=first; second.next=second; } second.next=second.next.next; return dummy.next; } /** * 单指针 ,实现两次遍历即可删除、 * 添加哑结点 * L-n+1节点就是我们要删除的节点 */ public ListNode removeNthFromEnd02(ListNode head, int n) { ListNode dummy = new ListNode(0); dummy.next=head; int length = 0; ListNode first=head; while (first != null) { length++; first = first.next; } length-=n; first=dummy; while (length > 0) { length--; first = first.next; } first.next = first.next.next; return dummy.next; } } class ListNode { int val; ListNode next; ListNode(int x) { val = x; } }
  • 相关阅读:
    解方程
    十进制快速幂
    comb
    题单解题记录-POJ题目分类推荐 (很好很有层次感)
    算法题离谱错误合集
    VMware-Ubuntu16.04踩坑解决记录
    2020牛客多校赛第三场
    需学习的博客地址
    错误记录
    可持久化线段树 区间第k大/小
  • 原文地址:https://www.cnblogs.com/qyx66/p/12507186.html
Copyright © 2011-2022 走看看