摘要: 在学习程序语言和进行程序设计的时候,交换两个变量的值是经常要使用的。通常我们的做法是:定义一个新的变量,借助它完成交换。代码如下:这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交换变量值的问题,都应采用此算法(以下称为标准算法)。标准算法最大的缺点(其实根本不算缺点)就是需要借助一个临时变量。那么不借助临时变量可以实现交换吗?答案是肯定的!这里我们可以用至少三种算法来实现,他们是: 1)算术运算 2)指针操作 3)位运算1) 算术运算简单来说,就是通过+和-运算来实现。代码如 阅读全文
posted @ 2011-02-16 20:54 abstractwind 阅读(789) 评论(0) 推荐(0) 编辑
摘要: 提供两种方法:1、有中间变量 2、无中间变量 阅读全文
posted @ 2011-02-16 20:49 abstractwind 阅读(2233) 评论(0) 推荐(0) 编辑
摘要: 法1、对链表1中的每个节点p1,判断链表2中是否有一个节点p2指向p1loop:p1从head1到最后一个节点loop:p2从head2到最后一个节点 if(p2是否指向p1) 相交 break时间复杂度:O(list1.length * list2.length)空间复杂度:O(1)法2、使用hash表loop:p1从head1到最后一个节点把p1放入hash表table中loop:p2从head2到最后一个节点if(p2在hash表中) 相交时间复杂度:O(list1.length + list2.length)空间复杂度:O(list1.length)法3、将其中一个链表首尾相连,检测另 阅读全文
posted @ 2011-02-16 20:44 abstractwind 阅读(6339) 评论(0) 推荐(2) 编辑