随笔分类 -  算法 每日一练

摘要:1、正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,需要计算出Q中的前几项,例如,当a=3,b=5,N=6时,序列为3,5,6,9,10,12(1)、设计一个函数void generate(int a,int b,int N ,int * Q)计算Q的前几项(2)、设计测试... 阅读全文
posted @ 2015-05-27 15:59 Jessica程序猿 阅读(647) 评论(0) 推荐(0)
摘要:我们知道,水王问题:有N个数,其中有一个数出现超过一半,要求在线性时间求出这个数。那么,我的问题是,加强版水王:有N个数,其中有一个数刚好出现一半次数,要求在线性时间内求出这个数。因为,很明显,如果是刚好出现一半的话,如此例: 0,1,2,1 :方案一:根据上面的例子,最后我们可能会输出不是符合条件... 阅读全文
posted @ 2015-04-28 15:21 Jessica程序猿 阅读(796) 评论(0) 推荐(0)
摘要:1 使用从大到小的优先队列保存最小的K个数,每次取出K个数之后的其余数和堆顶元素比较,如果比堆顶元素小,则将堆顶元素删除,将该元素插入void topK(int arr[],int n,int k){ if(k>n) return; priority_queue q; ... 阅读全文
posted @ 2015-04-28 09:57 Jessica程序猿 阅读(1972) 评论(0) 推荐(0)
摘要:一、题目概述:有一个没有排序,元素个数为2N的正整数数组。要求把它分割为元素个数为N的两个数组,并使两个子数组的和最接近。假设数组A[1..2N]所有元素的和是SUM。模仿动态规划解0-1背包问题的策略,令S(k, i)表示前k个元素中任意i个元素的和的集合。显然:S(k, 1) = {A[i] |... 阅读全文
posted @ 2015-04-26 10:05 Jessica程序猿 阅读(2301) 评论(1) 推荐(0)
摘要:题目设计算法并写出代码移除字符串中重复的字符,不能使用额外的缓存空间。注意: 可以使用额外的一个或两个变量,但不允许额外再开一个数组拷贝。进一步地,为你的程序写测试用例。解答这道题目其实是要你就地(in place)将字符串中重复字符移除。你可以向面试官问清楚, 不能使用额外的一份数组拷贝是指根本就... 阅读全文
posted @ 2015-04-22 16:08 Jessica程序猿 阅读(1731) 评论(0) 推荐(0)
摘要:2sum如果数组是无序的,先排序(n*logn),然后用两个指针i,j,各自指向数组的首尾两端,令i=0,j=n-1,然后i++,j--,逐次判断a[i]+a[j]?=sum,如果某一刻a[i]+a[j]>sum,则要想办法让sum 的值减小,所以此刻i 不动,j--,如果某一刻a[i]+a[j]x... 阅读全文
posted @ 2015-03-28 14:14 Jessica程序猿 阅读(471) 评论(0) 推荐(0)
摘要:题目:在一个整型数组中有一个元素的出现次数超过了数组长度的一半,试设计一个 在时间上尽可能高效的算法,找出这个元素。要求:(1)给出算法的基本设计思想。(2)根据设计思想,采用C或C++或Java语言描述算法,关键之处给出注释。(3)说明你所设计算法的时间复杂度和空间复杂度。(1)基本的设计思想:一... 阅读全文
posted @ 2014-10-28 16:19 Jessica程序猿 阅读(2972) 评论(0) 推荐(0)