首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
【Weiss】【第03章】练习3.4、3.5:有序链表求交、并
】的更多相关文章
【Weiss】【第03章】练习3.8:有序多项式求幂
[练习3.8] 编写一个程序,输入一个多项式F(X),计算出(F(X))P.你程序的时间复杂度是多少? Answer: (特例:P==0时,返回1.) 如果P是偶数,那么就递归计算((F(X))P/2)*((F(X))P/2), 如果P是基数,那么就递归计算((F(X))P/2)*((F(X))P/2)*F(X). 直到P==1时,直接返回F(X)结束递归. 时间复杂度计算为O(N)=2O((N/2)log(N/2))+O(1) 则时间复杂度O(logN) 因为一开始Poly的系数那里用的是in…
【Weiss】【第03章】练习3.4、3.5:有序链表求交、并
[练习3.4] 给定两个已排序的表L1和L2,只使用基本的表操作编写计算L1∩L2的过程. [练习3.5] 给定两个已排序的表L1和L2,只使用基本的表操作编写计算L1∪L2的过程. 思路比较简单,测试代码如下,两道题比较相似,测试代码就放一起了. #include <iostream> #include "linklist.h" using namespace std; using namespace linklist; template class List<in…
【Weiss】【第03章】练习3.15:自调整链表
[练习3.15] a.写出自调整表的数组实现.自调整表如同一个规则的表,但是所有的插入都在表头进行. 当一个元素被Find访问时,它就被移到表头而并不改变其余的项的相对顺序. b.写出自调整表的链表实现 c.设每个元素都有其被访问的固定概率pi.证明那些具有最高访问概率的元素都靠近表头. Answer: a简单得令人发指,所以不写了. b只需要在原链表上加一个自适应的Find访问版本find_selfadj就行,很简单,如下代码. c在摊还分析那里会频繁遇到的,这儿超纲了. 测试代码: #inc…
【Weiss】【第03章】练习3.12:单链表倒置
[练习3.12] a.编写一个非递归过程以O(N)时间反转单链表. b.使用常数附加空间编写一个过程以O(N)时间反转单链表. Answer: 这题的b貌似没啥意义,在a小题里直接用头插法,不断地将头节点后移, 并将当前头节点所在的节点的后继指针指回前驱就能倒置链表了,不需要额外的空间. 所以就写了a. 测试代码: #include <iostream> #include "linklist.h" using namespace std; using namespace l…
【Weiss】【第03章】练习3.7:有序多项式相乘
[练习3.7] 编写一个函数将两个多项式相乘,用一个链表实现.你必须保证输出的多项式按幂次排列,并且任意幂次最多只有一项. a.给出以O(M2N2)时间求解该问题的算法. b.写一个以O(M2N)时间执行乘法的程序,其中M≤N. c.写一个以O(MNlog(MN))时间执行乘法的程序. d.上面哪个时间界最好? Answer: [a].将两链表元素两两相乘并列出,从第一项开始,依次与其后的所有项比较,如相等则合并. 合并完成后,每次找出幂次最小的项,插入链表.(最原始的方法) [b].M≤1时,…
【Weiss】【第03章】练习3.6:有序多项式相加
[练习3.6] 编写将两个多项式相加的函数.不要毁坏输入数据.用一个链表实现. 如果这两个多项式分别有M项和N项,那么你程序的时间复杂度是多少? 两个按幂次升序的多项式链表,分别维护一个指针. 幂较小者将元素的副本拷贝入节点并加入新链表,指针向后移动. 幂同样大时,将两者的系数相加后的结果加入新链表,两个多项式链表的指针共同向前移动. 其中一个多项式到达尾部时,如另一个未到达尾部,则一边后移一边将相同元素的新节点加入新链表. 时间复杂度O(M+N). 测试代码如下: #include <iost…
第03章 AOP前奏
第03章 AOP前奏 提出问题 ●情景:数学计算器 ●要求 ①执行加减乘除运算 ②日志:在程序执行期间追踪正在发生的活动 ③验证:希望计算器只能处理正数的运算 ●常规实现 ●问题 ○代码混乱:越来越多的非业务需求(日志和验证等)加入后,原有的业务方法急剧膨胀.每个方法在处理核心逻辑的同时还必须兼顾其他多个关注点. ○代码分散: 以日志需求为例,只是为了满足这个单一需求,就不得不在多个模块(方法)里多次重复相同的日志代码.如果日志需求发生变化,必须修改所有模块. 动态代理 代理设计模式的原理:使用…
第03章_基本的SELECT语句
第03章_基本的SELECT语句 1. SQL概述 1.1 SQL背景知识 1946 年,世界上第一台电脑诞生,如今,借由这台电脑发展起来的互联网已经自成江湖.在这几十年里,无数的技术.产业在这片江湖里沉浮,有的方兴未艾,有的已经几幕兴衰.但在这片浩荡的波动里,有一门技术从未消失,甚至"老当益壮",那就是 SQL. 45 年前,也就是 1974 年,IBM 研究员发布了一篇揭开数据库技术的论文<SEQUEL:一门结构化的英语查询语言>,直到今天这门结构化的查询语言并没有太大…
suse 12 二进制部署 Kubernetets 1.19.7 - 第03章 - 部署flannel插件
文章目录 1.3.部署flannel网络 1.3.0.下载flannel二进制文件 1.3.1.创建flannel证书和私钥 1.3.2.生成flannel证书和私钥 1.3.3.将pod网段写入etcd 1.3.4.配置flannel为systemctl管理 1.3.5.分发flannel证书和启动文件到所有节点 1.3.6.配置并启动flannel服务 1.3.7.查看已分配的pod网段列表 1.3.8.查看各节点是否都存在flannel网卡 suse 12 二进制部署 Kubernetes…
【Weiss】【第03章】增补附注
基本上每章到增补附注这里就算是结束了. 根据设想,每章的这一篇基本上会注明这一章哪些题没有做,原因是什么,如果以后打算做了也会在这里补充. 还有就是最后会把有此前诸多习题的代码和原数据结构放整理后,以单个数据结构为单位放在一个文档里面. [未做习题] 习题3.1:编写打印出一个单链表的所有元素的程序. //这题例程里就有了,没必要单独开. 习题3.10:………………(题目太长懒得打,约瑟夫环问题). //这里应该是做循环链表,但是约瑟夫环本身可以用数学方法优化用循环链表做效率还挺低的,于是放弃.…