摘要: 99. 恢复二叉搜索树 题意 在BST中存在两个元素被交换了,现在需要把这两个元素给交换回来变成BST。 解题思路 将其转为数组,并且排好序后重新赋值给树结点; 使用变量pre来保存访问的前一个结点,因为是中序遍历,所以前面一个结点必然是小于当前结点的,并且用两个变量维护错误的两个结点,最后将这两个 阅读全文
posted @ 2017-09-11 23:57 banananana 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 86. 分隔链表 题意 给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。并且需要保留两个分区中每个节点的初始相对位置。 解题思路 用两个数组分别把小于和大于的都保存下来,然后依照顺序来创建链表;在原来的链表的基础上操作;创建新的结点; 用两个数组 阅读全文
posted @ 2017-09-11 22:28 banananana 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 61. 旋转链表 题意 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数; 解题思路 快的先移动k个结点,然后再让慢的和快的一起移动,最后慢的就可以到达倒数第k个结点,最后将快的指向慢的即可,然后再移动这里需要注意的是,如果k超出链表长度的话,有两种情况,如果是能整除的 阅读全文
posted @ 2017-09-11 21:32 banananana 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 234. 回文链表 题意 判断链表是否是回文串; 解题思路 将链表中的值加入到数组中,然后比较回文串,但是这有个缺点,就是需要花费数组的空间。 实现 如果是不需要额外的空间,那么可以让链表前半部倒置,让两个指针分别朝着前后两个方向移动,如果不相等则退出。 阅读全文
posted @ 2017-09-11 20:36 banananana 阅读(88) 评论(0) 推荐(0) 编辑