随笔分类 -  Algorithm

摘要:影响排序性能的要素: 时间性能; 辅助空间 算法的复杂度 简单排序【n^2】 算法思想: 第一趟: 从第一个记录开始,通过n-1次关键字比较,从n个记录中选出最小的并和第一个记录交换; 第二趟: 从第二个记录开始,通过n-2次关键字比较,从n -1个记录中选出最小的并和第二个记录交换; 复杂度稳稳的 阅读全文
posted @ 2019-11-29 23:33 自由之翼Az 阅读(930) 评论(0) 推荐(0) 编辑
摘要:暴力匹配: 假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的位置,怎么查找呢? 如果用暴力匹配的思路,并假设现在文本串S匹配到 i 位置,模式串P匹配到 j 位置,则有: 如果当前字符匹配成功(即S[i] == P[j]),则i++,j++,继续匹配下一个字符; 如 阅读全文
posted @ 2019-11-27 21:22 自由之翼Az 阅读(252) 评论(0) 推荐(0) 编辑
摘要:题目: 给出一个mxn 的矩阵,矩阵中的元素为0或1。称位置(x,y)与其上下左右四个位置(x,y+1)、(x,y-1)、(x+1,y)、(x-1,y)是相邻的。如果矩阵中有若干个1是相邻的(不必两两相邻),那么称这些1构成了一个“块”。求给定的矩阵中“块”的个数。 0 1 1 1 0 0 1 0 阅读全文
posted @ 2019-11-25 21:09 自由之翼Az 阅读(450) 评论(0) 推荐(0) 编辑
摘要:背包问题是一个np问题: 一般题意为: 存在n件物品,每件物品的重量为w[i],价值为v[i],现在有一个包,承重限制为weight,现在让你从n件物品中,选择一些物品装入背包中,在不超重的前提下,使得背包中所装物品的总价值最大。 由于每件物品【应该是每种物品】存在着两种情况,一种是,每种物品唯有一 阅读全文
posted @ 2019-11-25 20:36 自由之翼Az 阅读(340) 评论(0) 推荐(0) 编辑
摘要:最长回文子串的问题描述: 给出一个字符串S,求S的最长回文子串的长度。 样例: 字符串"PATZJUJZTACCBCC"的最长回文子串为“ATZJUJZTA”,长度为9。 先看暴力解法:枚举子串的两个端点i和j,判断在i,区间内的子串是否回文。 从复杂度上来看,枚举端点需要O(n2),判断回文需要O 阅读全文
posted @ 2019-11-24 20:16 自由之翼Az 阅读(513) 评论(0) 推荐(0) 编辑
摘要:【题目】二叉树可以用常规的三种遍历结果来描述其结构,但是不够直观,尤其是二叉树中有重复值的时候,仅通过三种遍历的结果来构造二叉树的真实结构更是难上加难,有时则根本不可能。给定一棵二叉树的头节点head,已知二叉树节点值的类型为32位整型,请实现一个打印二叉树的函数,可以直观地展示树的形状,也便于画出 阅读全文
posted @ 2019-09-02 23:19 自由之翼Az 阅读(156) 评论(0) 推荐(0) 编辑
摘要:对二叉树的节点来说,有本身的值域,有指向左孩子和右孩子的两个指针;对双向链表的节点来说,有本身的值域,有指向上一个节点和下一个节点的指针。在结构上,两种结构有相似性,现在有一棵搜索二叉树,请将其转换为一个有序的双向链表。 阅读全文
posted @ 2019-09-01 22:53 自由之翼Az 阅读(167) 评论(0) 推荐(0) 编辑
摘要:Problem: 反转单向和双向链表 【题目】 分别实现反转单向链表和反转双向链表的函数。 【要求】 如果链表长度为N,时间复杂度要求为O(N),额外空间 复杂度要求为O(1) Solution: 学会使用指针 阅读全文
posted @ 2019-07-13 17:41 自由之翼Az 阅读(260) 评论(0) 推荐(0) 编辑
摘要:【题目】给定链表的头节点head,实现删除链表的中间节点的函数。例如:不删除任何节点;1->2,删除节点1;1->2->3,删除节点2;1->2->3->4,删除节点2;1->2->3->4->5,删除节点3;进阶:给定链表的头节点head、整数a和b,实现删除位于a / b处节点的函数。例如:链表 阅读全文
posted @ 2019-07-13 17:32 自由之翼Az 阅读(249) 评论(0) 推荐(0) 编辑
摘要:【题目】 一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,只许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序? 【题解】 将要排序的栈记为stack,申请的辅助栈记为help。在stack上执行pop操作,弹出的元素记为cur。·如果cur小于或等 阅读全文
posted @ 2019-07-11 15:58 自由之翼Az 阅读(234) 评论(0) 推荐(0) 编辑
摘要:【题目】一个栈依次压入1、2、3、4、5,那么从栈顶到栈底分别为5、4、3、2、1。将这个栈转置后,从栈顶到栈底为1、2、3、4、5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他数据结构。 【题解】使用两个递归函数:一个递归函数是将栈底的元素返回并删除另一个函数是将返回的元素进行存 阅读全文
posted @ 2019-07-11 15:43 自由之翼Az 阅读(223) 评论(0) 推荐(0) 编辑
摘要:Djkstra算法示例演示 下面我求下图,从顶点v1到其他各个顶点的最短路径 首先第一步,我们先声明一个dis数组,该数组初始化的值为: 我们的顶点集T的初始化为:T={v1} 既然是求 v1顶点到其余各个顶点的最短路程,那就先找一个离 1 号顶点最近的顶点。通过数组 dis 可知当前离v1顶点最近 阅读全文
posted @ 2019-07-10 23:02 自由之翼Az 阅读(790) 评论(0) 推荐(0) 编辑
摘要:【题目】 给定一个数组arr,全是正数;一个整数aim,求累加和小于等于aim的,最长子数组,要求额外空间复杂度O(1),时间复杂度O(N) 【题解】 使用窗口: 双指针,当sum <= aim,,R->, 当sum > aim, L->记录最大的R - L即可 【进阶】 给定一个数组arr,值可正 阅读全文
posted @ 2019-06-27 16:15 自由之翼Az 阅读(349) 评论(0) 推荐(0) 编辑
摘要:Promblem: 给定两个二叉树T1和T2,返回T1的某个子树结构是否与T2的结构相等。 Solution: 首相将两棵树进行序列化【切记加上分割符和空节点标记】, 然后使用KMP算法进行两个字符串匹配,判断子树串是否属于原树串即可 Code: 阅读全文
posted @ 2019-06-16 09:43 自由之翼Az 阅读(443) 评论(0) 推荐(0) 编辑
摘要:Problem: 两个单链表相交的一系列问题 【题目】 在本题中,单链表可能有环,也可能无环。给定两个 单链表的头节点 head1和head2,这两个链表可能相交,也可能 不相交。请实现一个函数, 如果两个链表相交,请返回相交的 第一个节点;如果不相交,返回null 即可。 要求: 如果链表1 的长 阅读全文
posted @ 2019-06-07 22:53 自由之翼Az 阅读(566) 评论(0) 推荐(0) 编辑
摘要:Problem: 【题目】 给定一个单向链表的头节点head,节点的值类型是整型,再给定一个整数pivot。 实现一个调整链表的函数,将链表调整为左部分都是值小于 pivot的节点, 中间部分都是值等于pivot的节点,右部分都是值大于 pivot的节点。 除这个要求外,对调整后的节点顺序没有更多的 阅读全文
posted @ 2019-06-07 22:22 自由之翼Az 阅读(516) 评论(0) 推荐(0) 编辑
摘要:Problem: 【题目】 给定一个有N*M的整型矩阵matrix和一个整数K, matrix的每一行和每一 列都是排好序的。实现一个函数, 判断K是否在matrix中。 例如: 0 1 2 5 2 3 4 7 4 4 4 8 5 7 7 9 如果K为7,返回true;如果K为6,返回false。 阅读全文
posted @ 2019-06-07 21:39 自由之翼Az 阅读(272) 评论(0) 推荐(0) 编辑
摘要:Problem: “之”字形打印矩阵【题目】 给定一个矩阵matrix,按照“之”字形的方式打印这个矩阵, 例如: 1 2 3 4 5 6 7 8 9 10 11 12 “之”字形打印的结果为:1,2,5,9,6,3,4,7,10,11,8,12 【要求】 额外空间复杂度为O(1) Solution 阅读全文
posted @ 2019-06-07 21:16 自由之翼Az 阅读(230) 评论(0) 推荐(0) 编辑
摘要:Problem: 反转单向和双向链表 【题目】 分别实现反转单向链表和反转双向链表的函数。 【要求】 如果链表长度为N,时间复杂度要求为O(N),额外空间 复杂度要求为O(1) Solution: 学会使用指针 Code: 阅读全文
posted @ 2019-06-07 20:48 自由之翼Az 阅读(563) 评论(0) 推荐(0) 编辑
摘要:Problem: 旋转正方形矩阵【题目】 给定一个整型正方形矩阵matrix, 请把该矩阵调整成顺时针旋转90度的样子。 【要求】 额外空间复杂度为O(1). Solution: 同样,采用由外向内一圈一圈变换,找到元素变换位置的规律即可。 难点在于区分偶数维矩阵和奇数维矩阵的不同操作 Code: 阅读全文
posted @ 2019-06-07 19:52 自由之翼Az 阅读(392) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示