摘要: 题目: 给定一个整型数组,返回不包含本位置的累乘数组。 例如:arr=[2,3,1,4],返回[12,8,24,6],即除自己外,其他位置的类乘。 要求: 1.时间复杂度为O(N). 2.除需要返回的结果数组之外,额外空间复杂度为O(1). 使用除法: 结果数组记为res,所有数的乘积记为all。如果数组中不含0,则设置res[i]=all/arr[i]。如果数组中有一个0,对唯一的arr[i]=... 阅读全文
posted @ 2016-02-14 20:23 小魔仙 阅读(448) 评论(0) 推荐(0) 编辑
摘要: 题目: 给定一个N*N的矩阵matrix,在这个矩阵中,只有0和1两种值,返回边框全是1的最大正方形的边长长度。 例如: 0 1 1 1 1 0 1 0 0 1 0 1 0 0 1 0 1 1 1 1 0 1 0 1 1 其中边框全是1的最... 阅读全文
posted @ 2016-02-14 18:55 小魔仙 阅读(1010) 评论(0) 推荐(0) 编辑
摘要: 题目: 有N个长度不一的数组,所有的数组都是有序的,请从大到小打印这N个数组整体最大的前K个数。 例如: 输入含有N行元素的二维数组代表N个一维数组。 219,405,538,845,971 148,558 52,99,348,691 再输入整数K=5,则打印: Top 5:971,845,961,558,538。 要求: 1.如果所有数组的元素个数小于K,则从小到大打印所有的数。 2.时间复杂度... 阅读全文
posted @ 2016-02-14 17:24 小魔仙 阅读(1002) 评论(0) 推荐(0) 编辑
摘要: 题目: 给定一个double类型的数组arr,其中的元素可正、可负、可为0。返回子数组累乘的最大乘积。 思路: 假设以arr[i-1]结尾的数组最小累乘积为min,最大累乘积为max,那么以arr[i]结尾的数组的最大累乘积可能有三种情况。 max*arr[i];如:[3,4,5]算到5时。 min*arr[i];如:[-3,4,-5]算到-5时。 arr[i];如:[0.3,0.4,5]算... 阅读全文
posted @ 2016-02-14 14:46 小魔仙 阅读(508) 评论(0) 推荐(0) 编辑
摘要: 题目: 定义局部最小的概念。arr长度为1时,arr[0]是局部最小。arr的长度为N(N>1)时,如果arr[0] arr[mid - 1]) { right = mid - 1; } else if (arr[mid] > arr[mid + 1]) { left = mid + 1; } else { return mid; } } retu... 阅读全文
posted @ 2016-02-14 11:59 小魔仙 阅读(768) 评论(0) 推荐(0) 编辑
摘要: 一、子数组的最大累加和问题 题目: 给定一个数组,返回子数组的最大累加和。 例如:arr=[1,-2,3,5,-2,6,-1],所有子数组中,[3,5,-2,6]可以累加出最大的和12,return 12. 要求: 时间复杂度为O(N),额外空间复杂度为O(1)。 思路: 如果arr中没有正数,产生 阅读全文
posted @ 2016-02-14 10:41 小魔仙 阅读(1183) 评论(0) 推荐(0) 编辑
摘要: 题目: 给定一个长度不小于2的数组arr,实现一个函数调整arr,要么使所有的偶数下标都是偶数,要么使所有的奇数下标都是奇数。 要求:时间复杂度为O(N),额外空间复杂度为O(1)。 程序: public static void modify(int[] arr) { if (arr == null || arr.length < 2) { return; } int even ... 阅读全文
posted @ 2016-02-13 17:09 小魔仙 阅读(620) 评论(0) 推荐(0) 编辑
摘要: 题目: 给定一个长度为N的整型数组arr,其中有N个互不相等的自然数1~N,请实现arr的排序,但是不要把下标0~N-1位置上的数值通过直接赋值的方式替换成1~N。 要求:时间复杂度为O(N),额外空间复杂度为O(1)。 思路: 1.从左向右遍历arr,假设当前遍历到i位置。 2.if arr[i]==i+1,不需要调整,继续遍历。 3.if arr[i]!=i+1,进行调整。 根据调整功能的方法... 阅读全文
posted @ 2016-02-13 17:04 小魔仙 阅读(729) 评论(0) 推荐(0) 编辑
摘要: 一、未排序正数数组中累加和为给定值的最长子数组长度 题目: 给定一个数组arr,该数组无序,但每个数都是正数,再给定一个正数K。求arr的所有子数组中所有元素相加和为K的最长子数组长度。 例如: arr=[1,2,1,1,1],K=3, 累加和为3的最长子数组为[1,1,1],return 3。 程序:public static int getMaxLength(int[] arr, int k)... 阅读全文
posted @ 2016-02-13 13:55 小魔仙 阅读(2235) 评论(0) 推荐(0) 编辑
摘要: 一、Two Sum Given an array of integers, find two numbers such that they add up to a specific target number. The function twoSum should return indices of the two numbers such that they add up to the tar... 阅读全文
posted @ 2016-02-12 21:57 小魔仙 阅读(442) 评论(0) 推荐(0) 编辑