Algo算法-基础篇
文章平均质量分 53
基础算法入门教学
Alan0517
...
展开
-
算法题-简单系列-01-链表反转
给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。如当输入链表{1,2,3}时,返回值:{3,2,1}输入:{1,2,3}原创 2023-12-03 13:49:51 · 72 阅读 · 0 评论 -
算法题-简单系列-07-判断一个链表是否为回文结构
因为需要判断是否为回文结构,所以要比较头尾的数据,而链表无法随机查询数据,所以可以先将链表转换成list。给定一个链表,请判断该链表是否为回文结构。回文是指该字符串正序逆序完全一致。原创 2023-12-03 13:55:36 · 136 阅读 · 0 评论 -
算法题-简单系列-06-删除有序链表中重复的元素
因为第一个元素直接就与前面的链表节点连接好了,前面就不用管了,只需要跳过后面重复的元素,连接第一个不重复的元素就可以了,在链表中连接后面的元素总比连接前面的元素更方便嘛,因为不能逆序访问。step 2:使用一个指针遍历链表,如果指针当前节点与下一个节点的值相同,我们就跳过下一个节点,当前节点直接连接下个节点的后一位。step 4:循环过程中每次用到了两个节点值,要检查连续两个节点是否为空。step 3:如果当前节点与下一个节点值不同,继续往后遍历。step 1:判断链表是否为空链表,空链表不处理直接返回。原创 2023-12-03 13:55:11 · 114 阅读 · 0 评论 -
算法题-简单系列-05-两个链表的第一个公共结点
让N1和N2一起遍历,当N1先走完链表1的尽头(为null)的时候,则从链表2的头节点继续遍历,同样,如果N2先走完了链表2的尽头,则从链表1的头节点继续遍历,也就是说,N1和N2都会遍历链表1和链表2。因为两个指针,同样的速度,走完同样长度(链表1+链表2),不管两条链表有无相同节点,都能够到达同时到达终点。(N1最后肯定能到达链表2的终点,N2肯定能到达链表1的终点)。使用两个指针N1,N2,一个从链表1的头节点开始遍历,我们记为N1,一个从链表2的头节点开始遍历,我们记为N2。原创 2023-12-03 13:54:31 · 82 阅读 · 0 评论 -
算法题-简单系列-04-链表中倒数最后k个结点
输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。原创 2023-12-03 13:53:54 · 92 阅读 · 0 评论 -
算法题-简单系列-03-判断链表中是否有环
随后,slow 指针每次向后移动一个位置,而fast 指针向后移动两个位置。如果链表中存在环,则 fast 指针最终将再次与 slow 指针在环中相遇。我们遍历链表中的每个节点,并将它记录下来;一旦遇到了此前遍历过的节点,就可以判定链表中存在环。判断给定的链表中是否有环。如果有环则返回true,否则返回false。2、判断结点是否在哈希表中,若存在则返回 true。1、遍历链表,并将访问过的结点存储到哈希表中。我们使用两个指针,fast 与 slow。3、遍历结束,则返回 false。原创 2023-12-03 13:53:14 · 75 阅读 · 0 评论 -
算法题-简单系列-02-合并两个排序的算法
当两个链表都非空时进入循环,令新链表的下一个节点cur.next为val更小的节点,相应的链表节点后移一位,每次循环记得cur也要后移一位。设置result为哑结点,放置于新链表之前,最后返回的就是result.next;设置cur为当前节点,从result开始。输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的;如果循环结束后还有链表非空,cur指向非空链表,返回result.next。原创 2023-12-03 13:50:41 · 70 阅读 · 0 评论 -
算法基础篇-10-动态规划
动态规划原创 2022-12-17 19:45:11 · 292 阅读 · 0 评论 -
算法基础篇-09-贪心算法
贪心算法是一种思想原创 2022-12-17 11:30:46 · 208 阅读 · 0 评论 -
算法基础篇-08-排序-计数排序
计数排序原创 2022-12-11 15:17:08 · 186 阅读 · 0 评论 -
算法基础篇-07-排序-希尔排序(Shell Sort)
希尔排序原创 2022-12-11 13:54:05 · 509 阅读 · 0 评论 -
算法基础篇-06-排序-NB三人组(快速/堆/归并排序)
快速排序,堆排序,归并排序原创 2022-12-11 11:39:21 · 446 阅读 · 0 评论 -
算法基础篇-05-排序-LowB三人组(冒泡/选择/插入排序)
冒泡/选择/插入排序原创 2022-12-11 00:27:15 · 516 阅读 · 0 评论 -
算法基础篇-04-排序算法简单介绍
排序算法简单介绍原创 2022-12-11 00:26:34 · 182 阅读 · 0 评论 -
算法基础篇-03-查找(顺序查找和二分法查找)
查找(顺序查找和二分法查找)原创 2022-12-11 00:22:08 · 398 阅读 · 0 评论 -
算法基础篇-02-递归(汉诺塔问题)
递归(汉诺塔问题)原创 2022-12-11 00:21:21 · 166 阅读 · 0 评论 -
算法基础篇-01-时间复杂度和空间复杂度
时间复杂度和空间复杂度原创 2022-12-11 00:19:28 · 356 阅读 · 0 评论 -
字符串匹配--KMP算法
1. KMP算法是啥?KMP 算法是 D.E.Knuth、J,H,Morris 和 V.R.Pratt 三位神人共同提出的,称之为 Knuth-Morria-Pratt 算法,简称 KMP 算法。该算法相对于 Brute-Force(暴力)算法有比较大的改进,主要是消除了主串指针的回溯,从而使算法效率有了某种程度的提高。2.KMP算法代码public class KMP算法 { public static void main(String[] args) { String s原创 2021-03-30 22:18:30 · 135 阅读 · 0 评论