算法
文章平均质量分 57
飞翔的蜻蜓
这个作者很懒,什么都没留下…
展开
-
leetcode-singleNum2 找出一个数组中只出现过一次的元素
leetcode上的题: 所有题都要求线性时间复杂度(最好O(n)),及尽量少的线性空间复杂度(最好O(1)) 原题Single Number1:一个整数数组中有n个元素,其中只有一个只出现一次,其他恰好都出现两次,求出现一次的那个元素; 这个很简单, 用所有元素异或操作,最后的值就是所要的只出现一次的元素。 int singleNumber(int A[], int n) {原创 2014-06-07 18:09:42 · 391 阅读 · 0 评论 -
用栈来实现求数组中每个元素的左边第一个小和右边第一个小 -2014-03-26 20:35
数组中每个元素的左边第一个小和右边第一个小: 如[2,1,5,6,2,3]中5左边第一个小的元素是1,右边第一个小的元素是2; 如何在复杂度为O(n)的情况下计算出所有元素的左边第一个小和右边第一个小? 这是leetcode中的“ Largest Rectangle in Histogram ”,原题是求柱状图中面积最大的矩形。 如: 的面积最大矩形就是图中的阴影部分,即10原创 2014-05-31 21:04:19 · 1581 阅读 · 0 评论 -
微软2014实习生在线测试题:K-th String
原题是有N个0和M个1组成序列(2 = 0),按字典序排列,求出第K个串,若K超出则输出Impossible; 其实就是全排列,并从小到大的顺序排列,求第K个。 首先判断K是否超出,计算N个0和M个1组成全排列有total=种,若K>a则超出。 total个全排列中,前a=种是第一位为0,即第一位为0,其余M+N-1位是N-1个0和M个1组成全排列,所以判断a和K的关系就可以断定第一原创 2014-06-15 22:29:17 · 497 阅读 · 0 评论 -
"无头单链表中删除节点"有感——变通 2014-03-18 17:56
最近在找暑假实习,为了面试,复习一下算法和数据结构。随意翻到《编程之美》里的"无头单链表中删除节点":假设有一个没有头指针的单链表,一个指针指向此链表中间的一个节点(不是第一个,也不是最后一个),问如何将该节点从单链表中删除。 想法:要删除节点,得知道这个节点的前驱节点p,另p的next指向此节点的后继节点即可,但不知道头指针,而且还是单链表,那没法获得其前驱节点,也就没法删除该节点了啊?原创 2014-05-17 21:38:03 · 588 阅读 · 0 评论