链表
Fly_Fly_Zhang
初学java
展开
-
随笔-删除倒数第n个结点
问题:链表删除倒数第n个结点:思路:设置快慢指针,当fast走到链表尾部,slow所在的位置正好是要删除结点的上一个; 这样比得到长度,然后再去遍历时间复杂度低很多。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * L...原创 2018-12-09 10:29:23 · 129 阅读 · 1 评论 -
随笔-给定一个链表,两两交换其中相邻的节点
题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.思路:这是一个简单的结点交换问题,唯一要注意的是首次交换后的头结点也进行了变化,所以我们需要单独进行处理;还有就是关于循环的限制条件,只要余下链表有两个以上的结...原创 2019-02-08 20:51:01 · 3030 阅读 · 0 评论 -
随笔-合并K个排序链表
题目:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6思路:创建一个新表头,然后将所有链表元素按照大小加入到新的链表中;代码实现:/** * Definition for s...原创 2019-02-03 00:07:09 · 104 阅读 · 0 评论 -
随笔-扁平化多级双向链表
题目:您将获得一个双向链表,除了下一个和前一个指针之外,它还有一个子指针,可能指向单独的双向链表。这些子列表可能有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。扁平化列表,使所有结点出现在单级双链表中。您将获得列表第一级的头部。示例:输入:1—2---3—4---5—6–NULL|7—8---9—10–NULL|11–12–NULL输出:1-2-3-7-8...原创 2019-01-03 11:24:40 · 362 阅读 · 0 评论 -
随笔-旋转链表
题目:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4原创 2018-12-24 21:25:27 · 129 阅读 · 0 评论 -
随笔-反转链表
题目:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?思路:pre作为反转后的头结点,curNext作为老节点的头节点常规版本/** * Def原创 2018-12-29 17:14:23 · 118 阅读 · 0 评论 -
随笔-移除链表元素
删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5思路:主要有几个临界点,因为leetcode上的链表题,所有的头结点都算值节点,所以暂时将它当头结点使用,去除其他节点的val值之后,在判断它是不是val;/** * Definit...原创 2018-12-28 17:40:58 · 239 阅读 · 0 评论 -
随笔-相交链表(巧妙解法)
题目:相交链表方法一常规解法思路:采用双指针先计算出两条链的长度,然后求出差值,先让长链走差值步,下来两条链的长度一样,然后开始比较,直到遇见相见的节点或者走完链表。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * L...原创 2018-12-28 11:58:09 · 537 阅读 · 0 评论 -
随笔-判断一个链表是否为回文链表
问题:请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: trueclass Solution { public boolean isPalindrome(ListNode head) { // 要实现 O(n) 的时间复杂度和 O(1) 的空间复杂度,需要翻转后半部分...转载 2018-12-11 16:03:35 · 1169 阅读 · 0 评论 -
随笔-合并两个有序单链表(递归/非递归)
题目:合并两个有序单链表递归:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode Merge(ListNode...原创 2018-12-17 11:04:07 · 481 阅读 · 0 评论 -
数据结构-队列
什么是队列: 先进先出循环队列:package com.tuln.datastract;/*** @Created with IntelliJ IDEA* @Description: 循环队列* @Package: com.tuln.datastract* @author: FLy-Fly-Zhang* @Date: 2018/12/4* @Time: 20:44*/...原创 2018-12-09 14:19:00 · 180 阅读 · 0 评论 -
数据结构-链表栈
尾插法:入栈:o(n)出栈:o(n)头插法:入栈:o(1)出栈:o(1)链式栈采用头插法入栈package com.tuln.datastract;/*** @Created with IntelliJ IDEA* @Description:* @Package: com.tuln.datastract* @author: FLy-Fly-Zhang* @Date: 2...原创 2018-12-09 14:12:58 · 261 阅读 · 0 评论 -
数据结构-双向链表
插入顺序:先搞定插入元素的前驱和后继;在搞定后结点的前驱,最后解决前结点的后继双向链表相对于单链表多了一个 prior指针, 也可以说时空间换时间;package com.tuln.datastract;/*** @Created with IntelliJ IDEA* @Description:* @Package: com.tuln.datastract* @author: ...原创 2018-12-09 14:03:06 · 114 阅读 · 4 评论 -
数据结构(java)-顺序表/单链表
顺序表package com.tuln.datastract;import java.util.Arrays;/** * @Created with IntelliJ IDEA * @Description: * @Package: com.tuln.datastract * @User: FLy * @Date: 2018/11/21 * @Time: 19:04 */...原创 2018-11-24 14:44:31 · 552 阅读 · 0 评论 -
随笔-每k个节点反转链表(高效解法)
题目:给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->1...原创 2019-02-08 23:04:42 · 5017 阅读 · 1 评论