随笔分类 -  数据结构和算法

摘要:题目描述 请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。 若队列为空,pop_front 和 max_value 需要返回 -1 思路分析 对于一个队列来说,push_back 阅读全文
posted @ 2020-09-19 15:14 wsilj 阅读(182) 评论(0) 推荐(0)
摘要:一、栈的介绍 栈的英文是stack。 栈是一个先入后出(first in last out)的有序列表 栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行操作的特殊线性表,允许插入和删除的一端,称为栈顶(top),另一端为固定不变的一端,称为栈底(bottom)。 二、图解栈的入 阅读全文
posted @ 2020-09-19 14:48 wsilj 阅读(265) 评论(0) 推荐(0)
摘要:一、单向环形链表的应用场景(约瑟夫问题) Josephu 问题为:设编号为1,2, ... n 的 n 个人坐成一圈,约定从编号为 k(n≥k≥1) 的人开始报数,数到 m 的那个人出列,她的下一位又从 1 开始报数,数到 m 的那个人又出列,以此类推,直到所有人出圈为止,因此形成一个出圈编号的序列 阅读全文
posted @ 2020-09-18 07:47 wsilj 阅读(388) 评论(0) 推荐(0)
摘要:求单链表中有效节点的个数 代码实现 public static int countNode(HeroNode head) { if(head.next == null) { return 0; } int count = 0; HeroNode current = head.next; while( 阅读全文
posted @ 2020-09-16 07:31 wsilj 阅读(212) 评论(0) 推荐(0)
摘要:链表介绍 链表是有序的列表,在内存中的结构如下图所示 从上图可以看出 1. 链表以节点的方式存储,是**链式存储**,在内存中的地址不连续 2. 每个节点都包含了data域和next域:指向下一个节点的内存地址。(带head的链表其中head节点只包含next域,不存储数据) 3. 链表分为**带头 阅读全文
posted @ 2020-09-15 13:47 wsilj 阅读(253) 评论(0) 推荐(0)
摘要:数组模拟队列 队列的一个应用场景 银行叫号排队的案例 队列介绍 队列是一个有序列表,可以用数组或链表来实现。 遵循先入先出的原则。例如:银行先叫号的人先于后叫号的人办理业务。谁先叫号谁先办理,谁后叫号谁后办理。即:先进入队列的数据先取出,后进入队列的数据后取出。 示意图(使用数组模拟队列示意图) 数 阅读全文
posted @ 2020-09-14 10:32 wsilj 阅读(390) 评论(0) 推荐(0)
摘要:图示原始数组和稀疏数组的转换过程 代码实现 public class SparseArray { public static void main(String[] args) throws Exception { // 1. 创建原始数组 int[][] chessArr1 = new int[11 阅读全文
posted @ 2020-09-13 16:30 wsilj 阅读(516) 评论(0) 推荐(0)
摘要:```pythonfrom stack import Stackdef parChecker1(symbolString): """ # 1. 创建一个空栈,默认标记为匹配成功 # 2. 从左到右依次取括号 # 3. 如果是"(",加入栈顶,如果是")",看栈是否为空,为空则匹配失败,否则pop栈顶 # 4. 最后检查栈是否为空以及标记符号是否为True,为空则匹配成... 阅读全文
posted @ 2020-04-20 23:17 wsilj 阅读(266) 评论(0) 推荐(0)
摘要:```python def anagramSolution1(s1, s2): """ 变位词第一种解法:O(n^2) :param s1: :param s2: :return: """ alist = list(s2) # s2字符串转换为列表 pos1 = 0 stillOK = True while pos1 < len(s1) and stillOK: # 循环s1的每个字符 pos2 阅读全文
posted @ 2020-04-19 23:54 wsilj 阅读(259) 评论(0) 推荐(0)