摘要:
题目: 给定一个整型数组,返回不包含本位置的累乘数组。 例如: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]=... 阅读全文
摘要:
题目: 给定一个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的最... 阅读全文
摘要:
题目: 有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.时间复杂度... 阅读全文
摘要:
题目: 给定一个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]算... 阅读全文
摘要:
题目: 定义局部最小的概念。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... 阅读全文
摘要:
一、子数组的最大累加和问题 题目: 给定一个数组,返回子数组的最大累加和。 例如:arr=[1,-2,3,5,-2,6,-1],所有子数组中,[3,5,-2,6]可以累加出最大的和12,return 12. 要求: 时间复杂度为O(N),额外空间复杂度为O(1)。 思路: 如果arr中没有正数,产生 阅读全文