面试相关算法--链表
沙漠一只雕得儿得儿
沙漠一只雕,白月光与朱砂痣
展开
-
删除排序链表的重复节点
package 链表中;/** * 删除排序链表的重复节点 * @author buder_cp * */public class removeDuplicatesFromSortedList { public static ListNode deleteDuplicates(ListNode head) { ListNode pre = head; ListNode p =原创 2016-11-16 10:49:16 · 338 阅读 · 0 评论 -
交换链表相邻节点
题目描述:相邻节点之间互相交换位置节点初始化:public class ListNode { public int val; public ListNode next; public ListNode(int val, ListNode next) { super(); this.val = val; this.next = next; } public原创 2017-05-24 15:09:02 · 1087 阅读 · 0 评论 -
旋转链表
package 链表下;/** * 旋转链表 * * @author buder_cp * */public class rotateList { /** * 获取链表长度 * * @param head * @return */ public static int lengthOfList(ListNode head) { ListNode p =原创 2016-11-16 15:43:30 · 293 阅读 · 0 评论 -
判断链表环相关的面试题
题目1:判断链表是否有环 首先应判断两个单链表是否含有环,判断是否有环的方法很多,目前最好的方法是:一开始设置两个指针都指向表头,其中一个每次(一步)前进一个节点的叫p1,另外那个每次(一步)前进两个节点的叫p2 。p1和p2同时走,当其中有一个遇到null,就证明链表没有环。如何某个时刻(假设走了n步之后),p1和p2指向的地址相同,那么链表就是有环的。//判断链表是否有环原创 2017-05-23 17:05:23 · 367 阅读 · 0 评论 -
与倒数第N个节点相关的题目
基础链表构造:public class ListNode { public int val; public ListNode next; public ListNode(int val, ListNode next) { super(); this.val = val; this.next = next; } public ListNode(int val) {原创 2017-05-23 16:29:55 · 320 阅读 · 0 评论 -
Java实现寻找链表的中间节点
利用快慢指针:设置两个指针slow和fast,两个指针同时向前走,fast指针每次走两步,slow指针每次走一步,直到fast指针走到最后一个结点时,此时slow指针所指的结点就是中间结点。public class l链表中间节点 { public static void main(String[] args){ int[] array = {1,2,3,4,5,6,7,8,9,10原创 2017-05-23 16:25:50 · 4634 阅读 · 2 评论 -
合并两个有序链表
链表的基本构造:public class ListNode { public int val; public ListNode next; public ListNode(int val, ListNode next) { super(); this.val = val; this.next = next; } public ListNode(int val) {原创 2017-05-23 16:22:01 · 374 阅读 · 0 评论 -
打印两个有序链表的公共部分
package chapter02_listproblem;/** * 打印两个有序链表的公共部分 * * @author buder_cp * */public class _01_PrintCommonPart { /** * 初始化一个节点 * * @author buder_cp * */ public static class Node {原创 2016-12-02 21:35:36 · 479 阅读 · 0 评论 -
查询节点并删除
package 链表中;import com.jikexueyuan.listNode.ListNode;/** * 查询节点并删除 */public class RemoveLinkedListElements { public ListNode removeElements(ListNode head, int val) { if (head == null) { r原创 2016-11-15 16:33:05 · 286 阅读 · 0 评论 -
删除链表的倒数第N个节点
与查找链表的倒数第N个节点对比只改动了一行:查到倒数第N个节点后,将该节点的后续指针p1.next = p1.next.next;即可package 链表中;public class NthNodeFromEndOfList { /** * 获取链表的长度 */ public static int lengthOfList(ListNode head) { int m =原创 2016-11-15 16:13:49 · 217 阅读 · 0 评论 -
寻找链表的倒数第N个节点
package 链表中;public class NthNodeFromEndOfList { /** * 获取链表的长度 */ public static int lengthOfList(ListNode head) { int m = 0; ListNode p = head; while(p != null) { m++; p = p.next;原创 2016-11-15 15:53:21 · 275 阅读 · 0 评论 -
链表反转--递归与非递归
package 链表上;/** * 初始化链表节点 * * @author buder_cp * */class ListNode { public int val; public ListNode next; public ListNode(int val) { super(); this.val = val; } public ListNode(int原创 2016-11-15 11:53:03 · 344 阅读 · 0 评论 -
逆序遍历链表--递归与非递归方法
package 链表上;import java.util.Stack;/** * 初始化链表节点 * @author buder_cp * * @param */class ListNode { public T value; public ListNode next; public ListNode(){} public ListNode(T value, L原创 2016-11-15 10:58:42 · 1052 阅读 · 0 评论 -
链表的增,删,改,查实现
package 链表上;import java.util.Stack;/** * 初始化链表节点 * @author buder_cp * * @param */class ListNode { public T value; public ListNode next; public ListNode(){} public ListNode(T value, L原创 2016-11-15 10:56:34 · 502 阅读 · 0 评论 -
链表洗牌
package 链表下;public class reorderList { public static int lengthOfList(ListNode head) { ListNode p = head; int n = 0; while (p != null) { p = p.next; n++; } return n; } public sta原创 2016-11-17 19:15:32 · 713 阅读 · 0 评论 -
判断是否是回文链表
package 链表下;public class palindromeLinkedList { /** * 获取链表长度 * @param head * @return */ public static int lengthOfList (ListNode head) { ListNode p = head; int n = 0; while (p != nul原创 2016-11-17 11:54:15 · 393 阅读 · 0 评论 -
删除排序链表的所有重复节点
package 链表中;/** * 删除排序链表的所有重复节点 * @author buder_cp * */public class removeDuplicatesFromSortedListII { public static ListNode deleteDuplicates(ListNode head) { ListNode newHead = new ListNode原创 2016-11-16 11:01:20 · 348 阅读 · 0 评论 -
链表划分
package 链表下;/** * 链表划分 * @author buder_cp * */public class partitionList { public static ListNode partition (ListNode head, int x) { ListNode leftHead = new ListNode(0); ListNode leftTail =原创 2016-11-17 16:16:39 · 323 阅读 · 0 评论