力扣136 只出现一次的数字 位运算 力扣141 链表总结

异或运算符:^

异或运算符的特点:

1、满足交换律 a^b=b^a;
2、满足结合律 a^b^c=a^c^b;
3、任何数和零做异或运算,都得自身:a^0=a;
4、任何数和自己做异或得零:a^a=0;

常见链表处理方法总结:

链表中插入新节点步骤:

结点 p 之后增加一个结点 q 需要三步:

  1. 申请一段内存用以存储 q (可以使用内存池避免频繁申请和销毁内存)。
  2. 将 p 的指针域数据复制到 q 的指针域。
  3. 更新 p 的指针域为 q 的地址
Node q=new Node(q);
q.next=p.next;
p.next=q;

链表中删除节点步骤:

删除结点 p 之后的结点 q 总共分两步:

1、将q的指针域数据复制到p的指针域。
2、释放q的内存。

p.next=q.next;
q.next=null;

面试中链表问题总结:

获取倒数第k个元素获取中间位置的元素判断链表是否存在环判断环的长度;

学会使用双指针思路:

获取倒数第k个元素问题:

双指针a,b;
开始时a不动,b沿着链表走k步;
然后a,b同时沿着链表走,直到b走到链表尽头,a指向节点就是倒数第k个节点。

获取链表中间元素问题:

快慢指针a,b;
每次a沿着方向走一步,b沿着方向走两步;
当b无法走两步时,a,b都停下,若链表为奇数,则a指向中间元素,若为偶数,a指向链表前半段最后一个元素。

判断链表中是否有环:

快慢指针a,b;
a每次走一步,b每次走两步;
若b无法走两步时,没有环;若a,b相遇时,有环;

如何判断环的长度?

两指针相遇后开始计数,再次相遇时走的步数就是环的长度;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值