首页 > 试题广场 >

给定一个整数数组,包含正负数且无序,找出和最大的连续子数组,

[问答题]
给定一个整数数组,包含正负数且无序,找出和最大的连续子数组,比如数组[1,1,-5,6,7,-2],则和最大的子数组为[6,7],最大和为13
1.1定义一个函数,输入是一个整数数组,输出是和最大的连续子数组的和
1.2假设输入的是一个二维数组,而同时连续子数组的定义扩大为连续的二维子数组,比如一个3*4的二维数组[[-1,2,3,-1],[-2,1,2,-2],[-3,-3,-3,-3]],则和最大的连续子数组是[[2,3],[1,2]],所以最大和为8,请定义一个函数,输入是一个二维数组,输出是和最大的连续子数组的和,要求:必须使用1.1中函数来求解
1.3继续扩大二维连续子数组的定义,比如支持左右互联,即二维数组的左起始列可以和右边终止列连在一起形成子数组,请定义一个函数,输入是一个二维子数组,输出同样是和最大的连续子数组的和,要求:必须使用1.2中函数来求解
解答要求: 请使用熟悉的语言或伪代码,每个函数给出算法复杂度分析
def selectArray(array):  if len(array) < 2:  return array[0]  num = array[0] + array[1]; for i in range(len(array) - 1):  if array[i] + array[i + 1] > num:  num = array[i] + array[i + 1]  return num def tdarray(array):  endarray = []  for i in array:  num = selectArray(i)  endarray.append(num)  return selectArray(endarray)  def conarray(array):  for i in array:  i.append(i[0])  endarray = []  for i in array:  num = selectArray(i)  endarray.append(num)  endarray.append(endarray[0])  return selectArray(endarray)

发表于 2019-03-13 17:22:21 回复(0)