算法和数据结构
文章平均质量分 56
数据结构学习笔记
猿华
弱小和无知不是生存的障碍,傲慢才是。
展开
-
马拉车Manacher算法总结
左神666原创 2022-04-21 21:07:45 · 112 阅读 · 0 评论 -
一图理解递归实现汉诺塔过程
汉诺塔的递归实现想把1、2、3全部从a移动到c,就肯定先把1、2移动到b! 然后把3移动到c!问题就变成了吧1、2 从b移动到c,那么a就变成了工具杆子!代码实现:public static void hanoi2(int n) { if (n > 0) { func(n, "left", "right", "mid"); }}public static void func(int N, String from, String to, String other)原创 2022-03-14 11:04:48 · 379 阅读 · 0 评论 -
链表必刷题:快慢双指针,链表反转,找中点模版·····
234. 回文链表很有代表性!包含了链表遍历,快慢指针找中点模版,链表数据比对,链表反转!非常具有代表性class Solution { public boolean isPalindrome(ListNode head) { if(head == null || head.next == null) return true; // 找中点 1=>1 123=>2 1234=>2 ListNode A_end = mid(he原创 2021-12-13 22:22:56 · 468 阅读 · 0 评论 -
二叉树必刷题
二叉树算法题解合集原创 2021-12-09 11:18:22 · 346 阅读 · 0 评论 -
25. K 个一组翻转链表
25. K 个一组翻转链表反转前k个很简单、需要记录后驱结点,但这不只有前k个,有多个前k个;需要两个结点记录需要反转的链表的起点和终点,a,b把a当起点,反转[a,b)链表!在以b为起点当成另一个组递归,又会产生一个[a,b)把第一个a接到第二个反转后的结点上! */class Solution { public ListNode reverseKGroup(ListNode head, int k) { if (head == null) return null原创 2021-12-05 21:55:33 · 308 阅读 · 0 评论 -
KMP算法详解(保姆级别)
KMP算法详解(保姆级别)这东西没那么难理解,看别人的文章写的有点啰嗦了自己会的东西不算会,能给别人讲明白才算会背景给你两个字符串,问你他们是否具有包含关系(连续的)!大部分都会首先想到暴力解法,一个个比较!直到找到比对上的!但是如果是这两个:aaaaaaab和aaaaaaac就很操蛋了(O(n*m))!里面包含很多重复比较的过程,如何设计一种算法来减少这种重复很有必要!这就是KMP研究的领域(加速BUFF)!不过想要彻底弄明白KMP;还得先搞懂一个最大前缀数组最大前缀数组(最长前缀&a原创 2021-11-28 12:36:06 · 326 阅读 · 0 评论 -
算法入门刷题二十天(1/20)!
今天开始正式备战明年秋招,那算法必不可少,所以从今天开始每天力扣两三道题,有兴趣的可以一起探讨!-第 一题:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。思路一:比较简单,首先想到的就是遍历数组和目标值进行比较,相等就返回下标值!代码如下:class Solution { public int search(int[] nums, int target) {原创 2021-09-02 21:44:33 · 89 阅读 · 0 评论