sicp每日一题[2.62]

Exercise 2.62

Give a (n) implementation of union-set for sets represented as ordered lists.


这道题难度也不大,思路是依次从两个集合中取第一个元素,比较他们的大小,把小的那个和剩下所有元素连接的结果连接起来。由于两个集合中每个元素都只需要取出一次,所以时间复杂度应该是 O(n)。

(define (union-set set1 set2)
  (cond ((null? set1) set2)
        ((null? set2) set1)
        ((let ((s1 (car set1))
               (s2 (car set2)))
           (if (<= s1 s2)
               (cons s1 (union-set (cdr set1) set2))
               (cons s2 (union-set set1 (cdr set2))))))))

(define set1 (list 1 3 5 7 9))
(define set2 (list 2 4 6 8 10))

(union-set set1 set2)

; 结果如下所示
'(1 2 3 4 5 6 7 8 9 10)
posted @   再思即可  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示