用带头节点单链表表示集合,假设该单链表中的元素递增有序,设计一个高效算法求两个集合的交集,并分析该算法的时间和空间复杂度。
举一反三
- 已知递增有序的两个单链表A、B分别存储了一个集合。设计算法实现求两个集合的交集的运算A=A∩B。
- 用带头节点的单链表表示整数集合,完成以下算法并分析时间复杂度:[tex=1.286x1.357]VAHhaW1te0xvoqDVN54/dg==[/tex]设计一个算法求两个集合 [tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex] 和 [tex=0.786x1.0]sHo1pKm+gjxjcUAJjHrarQ==[/tex]的差运算,即 [tex=3.786x1.143]KO3URhTBfbqNu5waallC4A==[/tex]。要求算法的空间复杂度为[tex=2.071x1.357]4tn8z3a70oWd+Kan/q/D8g==[/tex],并释放单链表[tex=0.786x1.0]b4HkKtHXeHofHX/gJc8Agg==[/tex]和[tex=0.786x1.0]sHo1pKm+gjxjcUAJjHrarQ==[/tex]中不需要的节点。[tex=1.286x1.357]BEB68bP4vOVk/XYYizw11w==[/tex] 假设集合中的元素按递增排列,设计一个高效算江求两个集合 [tex=0.786x1.0]Yn3GgEZev6SOu2r4v1WnCw==[/tex] 和[tex=0.786x1.0]sHo1pKm+gjxjcUAJjHrarQ==[/tex]的差运算, 即 [tex=3.786x1.143]KO3URhTBfbqNu5waallC4A==[/tex] 。要求算法的空间复杂度为 [tex=2.357x1.357]4AO+SoeErUSxnKvIp+lB1w==[/tex] 并释放单链表 [tex=0.786x1.0]Yn3GgEZev6SOu2r4v1WnCw==[/tex] 和 [tex=0.786x1.0]ri6gmnf1+J9dGqG5/1sV6A==[/tex]中不需要的节点。
- 设计算法将两个循环单链表融合成一个循环单链表,并分析算法的时间复杂度。
- 有两个集合采用递增有序顺序表L1、L2存储,设计一个在时间上尽可能高效的算法求两个集合的并集,并给出算法的时间复杂度和空间复杂度。
- 设A=(a1,a2,...,an),B=(b1,b2,...,bm)是两个递增有序的线性表(其中n、m均大于1),且所有数据元素均不相同。假设A、B均采用带头节点的单链表存放,设计一个尽可能高效的算法判断B是否为A的一个子序列,并分析你设计的算法的时间复杂度和空间复杂度。