随笔分类 - 算法学习
摘要:最近课程比较紧张,中秋放假休息了两天,回来继续刷算法题。链表翻转是个比较常见的类型,要吃透。 力扣第92题:题目描述:反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 说明:1 ≤ m ≤ n ≤ 链表长度。 示例: 思路: 用指针记录要反转区间的首尾节点,在写一个反转局部区间m到n的函数,
阅读全文
摘要:题目描述: 输入一个链表,反转链表后,输出新链表的表头。例如链表为1->2->3->4 反转后为1<-2-<3-<4 节点定义如下: 思路一: 利用三个指针是实现链表反转 思路二: 利用递归的思想,假设链表为1->2->3->4->5先迭代到链表末尾5,然后从5开始依次反转整个链表 head.nex
阅读全文
摘要:题目描述: 输入一个链表,输出该链表中倒数第k个结点。例如有一个链表有六个节点1,2,3,4,5,6.则它的倒数第二个节点为5 节点定义如下: 思路一: 设置一个快指针,一个慢指针。像一把尺子,当尺子的一端移动到链表的末尾,则另一端则为倒数第k个节点。 思路二: 两次遍历。第一次遍历出链表的长度n,
阅读全文
摘要:题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。例如给定一个数组{2,4,6,3,5},调整后的数组为{3,5,2,4,6} 思路一: 最直接的思路是新建一个数组,
阅读全文
摘要:二分查找又称折半查找,查找效率不错 适用场景:顺序存储结构且按有序排列,这也是它的缺点。 demo如下: 二分查找中中间值的计算: 这是一个经典的话题,如何计算二分查找中的中值?大家一般给出了两种计算方法: 算法一: mid = (low + high) / 2 算法二: mid = low + (
阅读全文
摘要:运行结果如下: 参考自:https://zhuanlan.zhihu.com/p/30141170
阅读全文