LeetCode刷题(2)

本文介绍两种高效算法实现:一是将链表按K个节点一组逆序;二是利用位移操作实现不使用乘除法的整数除法运算。这两种算法都巧妙地提高了计算效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Reverse Nodes in k-Group
将链表按K个进行分组,然后对每一个分组逆序
通过cur记住分组链表头,cur.next=head
则依次让第二个指向第一个,第三个指向第二个。。。
然后将cur.next指向新组的头,并将原来的头作为尾指向下一个分组,代码如下:

     while countnode:
            count += 1
            if count < k:
                countnode = countnode.next
            else :
                countnode = countnode.next
                first = cur.next
                tmp1 = first
                while count > 1:
                    count -= 1
                    tmp = cur.next.next
                    #print tmp.val
                    cur.next.next = tmp.next
                    #print first.val
                    tmp.next = first
                    first = tmp
                cur.next = first
                cur = tmp1
                cur.next = countnode
                count = 0

tmp在进行定位时采用cur定位,而没有采用first是因为first还要用于作为tmp的指向进行更新。
2.Divide Two Integers
在不使用乘法和除法的前提下做除法,是的减法
为了提高性能,移位

        while dividend >= divisor:
            if dividend >= sub:
                dividend -= sub
                res += c
                sub <<= 1
                c <<= 1
            else:
                sub >>= 1
                c >>= 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值