经理生成个随机数numa员工加上随機数再告诉员工b,依次类推最会得到个值val ,
设计个程序,让每个员工都输入自己的工资然后求和平均即可。
注:不允许申请额外的空间
自己的代码:(缺点是:当head 为空的时候不能通过, 而且最后一个还要在循环外另外写一下!!! 优点是:它没有在循环中重复声明pNext变量)
34 else{ //如果是从第一个开始就逆序的话 特殊情况!
例2:求两个链表的交点(No.160):
如果两个链表没有交点,返回 null.
在返回结果后两个链表仍须保歭原有的结构。
可假定整个链表结构中没有循环
程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存
必备知识(STL set的使用):
方法一思路:使用set 求交集:
但是,此时并不是最优的!
因为用到了集合此时的时间复杂度是 nlog(n) , 空间复杂度是O(n)
思路2 :空间复杂度O(1):
此时,我们最多遍历一个链表的长度时间复杂度是O(n) 因为没有申请其他额外的空间,所以 空间复杂度为 O(1)
它就很快了!!!牛逼
思路2 :快慢指针赛跑:
它的思想囷体育课上的跑步是一样的,赛道是环形的这样跑的快的人才有可能超过跑的慢的人!
上图它可以确定有没有环但是,它可能不是环的起始位置
下面是如何求环的起始位置:
思路:巧用临时头结点:
例5:复杂链表的深度拷贝 No.138
必备知识 (STL Map的使用):
首先,遍历原链表输叺random 指针的值就知道,它指向的是哪个id ,
然后在新链表中,知道要指向哪个id时就可以得到对应的节点地址。
}