东寻

导航

2020年2月18日 #

二叉树的镜像

摘要: 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 思路 递归。 时间复杂度O(h),空间复杂度O(h)。 代码 笔记 先考虑输入的基础边界。 阅读全文

posted @ 2020-02-18 23:30 东寻 阅读(104) 评论(0) 推荐(0) 编辑

树的子结构

摘要: 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 思路 因为题解的特殊边界问题和搜索树时的跨层问题,需要将递归拆分和改造。 时间复杂度O(n),空间复杂度O(n)。 代码 笔记 树的边界问题,跨层搜索问题可以通过递归携带deep解决。 阅读全文

posted @ 2020-02-18 20:42 东寻 阅读(189) 评论(0) 推荐(0) 编辑

合并两个排序的链表

摘要: 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 思路 递归与非递归。 时间复杂度O(m+n),空间复杂度O(m+n)。 递归代码 java / public class ListNode { int val; ListNode next = n 阅读全文

posted @ 2020-02-18 17:56 东寻 阅读(174) 评论(0) 推荐(0) 编辑

反转链表

摘要: 题目描述 输入一个链表,反转链表后,输出新链表的表头。 思路 原地反转链表指针。 时间复杂度O(n),空间复杂度O(1)。 代码 笔记 当while循环开始时的初设如编码所示时,根据while循环中使用了next.next,循环条件必须判断next的存在,不然会指针出错。 阅读全文

posted @ 2020-02-18 17:12 东寻 阅读(127) 评论(0) 推荐(0) 编辑

链表中倒数第k个结点

摘要: 题目描述 输入一个链表,输出该链表中倒数第k个结点。 思路 快慢指针注意边界。 时间复杂度O(n),空间复杂度O(1)。 代码 java / public class ListNode { int val; ListNode next = null; ListNode(int val) { this 阅读全文

posted @ 2020-02-18 17:00 东寻 阅读(90) 评论(0) 推荐(0) 编辑

调整数组顺序使奇数位于偶数前面

摘要: 题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路 空间换时间,队列。时间复杂度O(n),空间复杂度O(n)。 稳定原地排序,冒泡。时间复杂度O(n²),空间复杂度O 阅读全文

posted @ 2020-02-18 16:40 东寻 阅读(157) 评论(0) 推荐(0) 编辑