面试问题
小学生_
生活是把无情刻刀,改变了我们模样!
展开
-
一个正整数的二进制表示里面有多少个1
如果回答是:一个遍历,将所有为1的位加起来,基本上要被Pass了! 因为你一旦将这个十进制的数转成二进制你就已经输了,二进制遍历的时间复杂度是O(n),下面介绍一种更高效的位移算法,其计算步骤是:如果一个正整数x与x-1做按位与运算的结果>0,那么就说明这个正整数x的二进制里面包含了一个1,因此可以循环计算,直到x<=0,执行计算的次数就是1的个数。 举个例...原创 2018-08-16 22:55:36 · 1983 阅读 · 0 评论 -
leetcode第二题扩展-两个正序链表求和
原题: 拓展: 思路: 如何链表是反序的,那么就与我们正常情况下的计算相同了,只需要考虑进位就可以了。 因此解决方案自然就想到了将两个链表反序存储,并不需要对单链表进行反置操作,只需借助 stack 就可以了。 步骤: 1、创建两个空栈s1和s2,创建结果栈rs。 2、将链表l1压入栈s1,将l2压入栈s2。 3、弹出栈s1和s2的元素...原创 2018-09-24 02:06:41 · 822 阅读 · 0 评论