
c++
ns_xlz
这个作者很懒,什么都没留下…
展开
-
重排链表
给定一个单链表 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 阅读 · 0 评论 -
奇偶链表
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->...原创 2018-07-30 15:13:58 · 484 阅读 · 0 评论 -
分割链表,将链表分割成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 评论 -
链表相加,每一个节点从高到低存储数字的一位。
给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)...原创 2018-07-30 11:21:28 · 454 阅读 · 0 评论 -
反转从位置 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 阅读 · 0 评论 -
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3这个就超级简单了,同样分构造新链表和原地。构造新链表只用比较尾节点的值是不是等于要插入的值,如果是则不插入,如果不是则插入。原地的话...原创 2018-07-26 19:56:20 · 3450 阅读 · 0 评论 -
将有序链表转换为高度平衡的二叉树
首先来看一个简单的例子,如何将有序数组转换为平衡二叉树?模拟堆排序的方式,如果每次把数组的中位数当作根节点,把中位数左边的序列的中位数当作左子节点,右边的序列的中位数当作右子节点,递归上面的过程即可得到一个平衡二叉树。/** * Definition for a binary tree node. * struct TreeNode { * int val; * ...原创 2018-07-29 23:30:01 · 750 阅读 · 0 评论 -
反转链表
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?这是一道非常简单的题,首先考虑原地非递归反转。用头插法即可。/** * Definition for singly-linked li...原创 2018-07-30 16:18:01 · 329 阅读 · 0 评论