摘要: 题目:输入一个数组,数组中有正也有负,数组中连续的一个或者连续的多个数字组成一个子数组。求所有的子数组和的最大值。要求时间复杂度为O(n)思路:我们的最直观的想法就是求出这个数组中的所有的子数组,然后比较他们的和的大小,如果输入的数组元素个数为N,那么就要有N(N+1)/2个子数组。很明显是不符合要... 阅读全文
posted @ 2015-08-22 16:56 lisahappy 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 题目:输入n个数,输出最小的k个数。时间复杂度为O(n)思路1:我们想的到的最直接的思路就是对这个N个数进行排序,然后就可以找到最小的k个了,同样可以用快排partition。但是只要找到前K个最小的元素,并不一定要排好序。Java代码:import java.util.Random;//时间复杂度... 阅读全文
posted @ 2015-08-22 15:14 lisahappy 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一个数组,找出一个数字,它在数组中出现的次数超过数组的一半。题目规定如果可以改变数组中元素的位置。思路1:如果数组是排序的,那么中间元素的位置不就是次数超过数组一半的元素吗?是的,因此我们可以才用partition来做判断。如果partition的得到的整数index是在数组的中间,那么该... 阅读全文
posted @ 2015-08-22 11:46 lisahappy 阅读(224) 评论(0) 推荐(0) 编辑