前言
Leecoat上的题,但是不知道为啥一直没通过求大佬指点。
一、题目
示例:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和
二、使用步骤
代码如下(示例):
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
2.读入数据
代码如下(示例):
from typing import List
# leetcode submit region begin(Prohibit modification and deletion)
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
l=len(nums)
if(l == 1):
max1=nums[0]
else:
if max(nums) < 0 :
max1=max(nums)
else:
max1 =0
sum=0
for i in range(l):
sum=sum+nums[i]
if sum < 0:
sum=0
if sum > max1:
max1=sum
print(max1)
a=[-4,-5,3,4,7,-9,8,9,-10]
b=Solution()
b.maxSubArray(a)
总结
我的想法是,先判断这个数组的长度,如果是1,值就是唯一一个,如果不是,然后是判断数组中的最大值,如果是负数,就是个全负数的数组,那么最大和就是最大值。如果不是再继续往下。核心是通过遍历相加,如果是求和是小于0的,就把sum=0,再继续加后边的