随笔分类 - 编程
摘要:三维形体的表面积 在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。 每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。 请你返回最终形体的表面积。 示例 1: 输入:[[2]] 输出:10示例 2: 输入:[[1,2],[3,4]] 输
阅读全文
摘要:平面上有 n 个点,点的位置用整数坐标表示 points[i] = [xi, yi]。请你计算访问所有这些点需要的最小时间(以秒为单位)。 你可以按照下面的规则在平面上移动: 每一秒沿水平或者竖直方向移动一个单位长度,或者跨过对角线(可以看作在一秒内向水平和竖直方向各移动一个单位长度)。 必须按照数
阅读全文
摘要:链式队列 链式队列,简称"链队列",即使用链表实现的队列存储结构。 结构体 struct Node{ DataType info; Node * next; }; typedef Node* PNode; struct LinkQueue{ PNode front; PNode rear; }; t
阅读全文
摘要:队列 队列,和栈一样,也是一种对数据的"存"和"取"有严格要求的线性存储结构。 与栈结构不同的是,队列的两端都"开口",要求数据只能从一端进,从另一端出,如图 1 所示: 图 1 队列存储结构 队列存储结构的实现有以下两种方式: 顺序队列:在顺序表的基础上实现的队列结构; 链队列:在链表的基础上实现
阅读全文
摘要:栈存储结构 栈和链表的区别 同顺序表和链表一样,栈也是用来存储逻辑关系为 "一对一" 数据的线性存储结构 从图 1 我们看到,栈存储结构与之前所学的线性存储结构有所差异,这缘于栈对数据 "存" 和 "取" 的过程有特殊的要求: 1.栈只能从表的一端存取数据,另一端是封闭的; 2.在栈中,无论是存数据
阅读全文
摘要:顺序栈 顺序栈定义 用顺序存储结构实现的栈,即利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时 由于栈的操作的特殊性,还必须附设一个栈顶指针(top)来动态的指示栈顶元素在顺序栈中的位置。 通常以 top= -1 表示栈空。 结构体定义 struct SeqStack{ int MAX
阅读全文
摘要:双向链表 1. 双向链表的简介&概念 单链表在很多时候已经可以胜任很多优秀的操作了,但是,单链表任然存在不足,所谓‘单链表’,是指结点中只有一个指向其后继的指针,具有单向性,有时需要搜索大量数据的时候,就必须要多次进行从头开始的遍历,这样的搜索不是很便利。 图:单链表示意图 对此在单链表的基础上,产
阅读全文
摘要:链接表示 ➢ 2.3.1 单链表 ➢ 2.3.2 循环链表 ➢ 2.3.3 双链表 单链表 线性表的链式存储结构是用一组任意的存储单元存储线性表的各个数据元素。为了表示线性表中元素的先后关系,每个元素除了需要存储自身的信息外还需保存直接前趋元素或直接后继元素的存储位置。 线性链表有关术语 结点:数据
阅读全文
摘要:什么是线性表? 是零个或者多个类型相同元素的又穷序列。 基本运算: 1. PSeqList createNullList_seq(int m) 创建并且返回一个空线性表。 2. int insert_seq( PSeqList palist, int p, DataType x ) 在线性表list
阅读全文
摘要:你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。 你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。 示例: 输入: shorter = 1 longer = 2 k = 3 输出:
阅读全文
摘要:二叉排序树 算法简介 二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。该树属于一种输入数据就默认产生一种顺序的数据结构,这不像本章前面的内容所描述的静态的在某一个数据段内进行查找,动态查找是一种输入时就会自动对其进行排序的数据结
阅读全文
摘要:给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例: 输入:"abbaca" 输出:"ca" 解释: 例如,在 "abbaca" 中,我们可以删除
阅读全文
摘要:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 思路: 一个栈存储元素,一个栈辅助 维护两个栈,第一个栈存储元素,第二个栈用
阅读全文
摘要:有效括号字符串为空 ("")、"(" + A + ")" 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。例如,"","()","(())()" 和 "(()(()))" 都是有效的括号字符串。 如果有效字符串 S 非空,且不存在将其拆分为 S = A+B 的方法,我们
阅读全文
摘要:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4输出:1->1->2->3->4->4 思路1:利用stack模板 代码: #include <iostream> #include <stack> using
阅读全文
摘要:使用流操作算子 它们都是在头文件 iomanip 中定义的;要使用这些流操纵算子,必须包含该头文件。 表1:C++ 流操纵算子 流操纵算子作 用 *dec 以十进制形式输出整数 hex 以十六进制形式输出整数 oct 以八进制形式输出整数 fixed 以普通小数形式输出浮点数 scientific
阅读全文
摘要:在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。 移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回
阅读全文
摘要:给你一个字符串 s,它由数字('0' - '9')和 '#' 组成。我们希望按下述规则将 s 映射为一些小写英文字符: 字符('a' - 'i')分别用('1' - '9')表示。字符('j' - 'z')分别用('10#' - '26#')表示。 返回映射之后形成的新字符串。 题目数据保证映射始终
阅读全文
摘要:国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-", "b" 对应 "-...", "c" 对应 "-.-.", 等等。 为了方便,所有26个英文字母对应摩尔斯密码表如下: [".-","-...","-.-.","-..","."
阅读全文
摘要:实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。 示例 1: 输入: "Hello" 输出: "hello"示例 2: 输入: "here" 输出: "here"示例 3: 输入: "LOVELY" 输出: "lov
阅读全文