![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指Offer
Wolfer0614
这个作者很懒,什么都没留下…
展开
-
剑指Offer,编程心得(Java/Python)--不用加减法做加法
题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 解题思路: 考察的是或,与,异或运算,移位操作(计算机组成原理) 异或:非进位上加法 与:需进位位上加法 数字A,B,先异或A^B,在与并移一位(A&B)<<1,直到(A&B)<<1 结果为0,说明不再有进位,获得最终结果。 犯错之处:没有移位;判断条件考虑错误 Java代码: public class Solution { public int Ad原创 2020-06-21 22:50:21 · 116 阅读 · 0 评论 -
剑指Offer,编程心得(Java/Python)--链表中环的入口节点
题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 解题思路:利用步数差,时间O(n),空间O(1): 首先,设立速度不同的两个指针,slow=1,fast=2; 若链表没有环,则fast指针或fast.next会指向null(其中对fast.next!=null的判断容易遗漏); 若有环,则快慢指针必然相遇,数学证明:假设从链表头到环入口距离是a,从环入口到碰撞点距离是b,从碰撞点回到环入口距离是c。则有2*(a+b)=a+K*(b+c)+b -->..原创 2020-06-21 22:34:53 · 111 阅读 · 0 评论 -
剑指Offer,编程心得(JAVA/Python)--二叉树的下一个结点
题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 解题思路: 树中节点的下一个节点分三种情况分析:1.当前节点存在右子树,则其为右子树最左端的节点; 2.当前节点无右子树,并且该节点为父节点的左子树,则下个节点是其父节点;3. 当前节点无右子树,且该节点是父节点的右子树,则需要向上进行查找,即父节点的下一个节点也是该节点的下一个节点。直到达根节点,则 下一个节点为null。 剑指offer中因为设立一个.原创 2020-06-21 22:20:27 · 121 阅读 · 0 评论 -
剑指Offer,编程心得--复杂链表的复制
题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解题思路: 遍历节点,(创建子链)每访问一个节点A,将该节点的复制节点A’放置在A的后一个;(更新子链中random)然后重新遍历一次链表,将复制节点A’的random指针通过A.random.next进行更新;(拆分子母链),将新旧链表拆开成两个独立的链表。原创 2020-06-21 21:58:14 · 140 阅读 · 1 评论 -
剑指Offer,编程心得(JAVA / Python)--整数中1出现的次数(JZ31)
题目描述:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。 解题思路:归纳法,按位数从低到高依次归纳,总结规律。 以十位为例。在0-100中,十位有1的数字是10-19,共10个,所以以100作为一个完整阶梯,其中必然包含10个十位为1的数。原创 2020-06-21 15:21:04 · 146 阅读 · 0 评论