- 博客(9)
- 资源 (2)
- 收藏
- 关注
原创 反转链表
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?这是一道非常简单的题,首先考虑原地非递归反转。用头插法即可。/** * Definition for singly-linked li...
2018-07-30 16:18:01
329
原创 重排链表
给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5, 重...
2018-07-30 16:02:03
269
原创 奇偶链表
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->...
2018-07-30 15:13:58
484
原创 分割链表,将链表分割成k份
Given a (singly) linked list with head node root, write a function to split the linked list into k consecutive linked list "parts".The length of each part should be as equal as possible: no two part...
2018-07-30 14:46:51
434
原创 链表相加,每一个节点从高到低存储数字的一位。
给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)...
2018-07-30 11:21:28
453
原创 将有序链表转换为高度平衡的二叉树
首先来看一个简单的例子,如何将有序数组转换为平衡二叉树?模拟堆排序的方式,如果每次把数组的中位数当作根节点,把中位数左边的序列的中位数当作左子节点,右边的序列的中位数当作右子节点,递归上面的过程即可得到一个平衡二叉树。/** * Definition for a binary tree node. * struct TreeNode { * int val; * ...
2018-07-29 23:30:01
750
原创 反转从位置 m 到 n 的链表
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL思路:首先得找到位置m和m前的节点pre,然后把m后面的节点一个接一个的插入到pre的后面去。...
2018-07-26 20:21:12
789
原创 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3这个就超级简单了,同样分构造新链表和原地。构造新链表只用比较尾节点的值是不是等于要插入的值,如果是则不插入,如果不是则插入。原地的话...
2018-07-26 19:56:20
3450
原创 删除排序链表里面的重复元素,留下不重复的元素
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3分析:这种题一般分为两种实现,一种构建一个新的链表,一种是原地操作。...
2018-07-26 19:48:12
523
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人