《算法之美》例题

算法之美 例题

数字之魅——数字中的技巧

编程之美 2.3 寻找发帖“水王” 及其拓展问题 介绍博客

1. 可以假设帖子的第一个ID是次数最大的,用candidate记录,次数用nTimes记录。

2. 遍历下一个ID,如果跟candidate一样,nTimes++,否则,遇到一个挑战,则nTimes--, 如果nTimes==0,下一步就要重复第一步了。

3.遍历结束,nTimes>0的那个candidate就是水王ID,他是获胜者。

结构之法——字符串及链表的探索

【3.4 拓展问题】编写一个函数,给定一个链表的头指针,要求只遍历一次,将单链表中的元素顺序反转过来。

思路:遍历每一个结点,当前结点指向上一个节点的地址。

伪代码如下:

1 node *prev_node = null;//上一个节点
2 node *now_node;//头结点
3 while((*now_node)!=null){
4     node *temp = now_node;
5     now_node = now_node->next;
6     temp->next = prev_node;
7     prev_node = temp;
8 }

【3.6 判断两个链表是否相交】一个大的系统中,如果出现两个链表相交的情况,而且释放了其中一个链表的所有节点,那样就会造成信息的丢失,并且另一个与之相交的链表也会受到影响,这是我们不希望看到的。

解法一:直接遍历

解法二:根据上图可以发现链表相交的特点最后的节点相同,判断两个链表的最后一个节点是否相同。

 

 

 

posted @ 2018-10-25 21:33  _春华秋实  阅读(172)  评论(0)    收藏  举报