算法
LearnITing
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
最大子数组乘积
给定一个n个元素的数组,数组元素全部为整数,负数,正数和0均有可能存在,设设计一个算法,找出连续的几个数组元素相乘积最大 刚开始时毫无头绪的,以为直接用递归就可以了,不过,当你毫无头绪的时候,你就考虑最简单的情况,然后进行分类讨论,一般是很有效果的 首先当无0的情况的时候,并且为负数位偶数个的情况的时候 不用说 全部乘起来一定是最大的乘积(无0负数位偶数个) 其次当无0负数为奇数个的原创 2012-10-04 14:35:55 · 2793 阅读 · 0 评论 -
给定一个整数实现奇偶比特位互换
上次参加创新工场笔试,有个题目叫做定义一个宏实现,给定一个整数,进行奇偶比特位互换,比如整数6互换之后就变成9,当时毫无头绪,回头想想也不是很难 思路如下: 左移一位,则偶数位到了奇数位,将偶数位清零 右移一位,则奇数位到了偶数位,将奇数位清零 让两者相加,则得结果 32位的整数,那么如何让偶数位清零,我们知道任何比特位与1相与是其本身,与0相与变为0,因而若想将偶数原创 2012-09-27 21:12:05 · 3907 阅读 · 0 评论 -
有n个人到图书馆还书,还有n个人到图书馆借书,若他们要还和借的书是同一种书且图书馆内现在没有此书,求他们要怎么排队才能保证每个人都能借到书
我们可以把图书馆这本书看成一份资源 资源如果等于0 说明需要还书 如果大于等于0 既可以还书 也可以借书 函数代码如下: void f(int returnbook, int borrowbook,int resource,string& queueresult, int& resolutionnumber) { if(borrowbook == 0&&res原创 2012-04-11 11:12:45 · 3339 阅读 · 2 评论 -
单链表的环的入口点一个小证明
如何判断一个单向链表是否有环?如果有,如何找到其入口节点的指针? 算法思想:用两个指针p1,p2同时指向链表的头部,p1一次移动一步,p2一次移动两步,如果最终p1和p2重合则说明链表有环,如果p2走到空指针(链表的结尾)则说明链表无环; 如果最终p1和p2重合,使p2重新指向链表的头结点,然后p1和p2同时一次移动一步,当p1和p2再次重合时该节点指针就是环的入口节点指针原创 2012-03-04 10:15:39 · 2463 阅读 · 1 评论 -
求N!的二进制表示中最低位1的位置解答题中一个小证明
问题2的解法2中说到(如果不清楚题目的,可以网上搜一下 编程之美,不要被阶乘吓到) N!中含有质因子2个个数等于N减去N的二进制表示中1的数目, 我真是百思不得其解,网上查了一些资料,好像也没有给出证明,有个哥们有证明,不过写的不够清楚,居然还是写在一张纸上的,然后拍完了传上去的,看得我真是原创 2012-02-29 15:02:32 · 1486 阅读 · 0 评论
分享