saurus2
Saurus2
saurus2
전체 방문자
오늘
어제
  • 분류 전체보기
    • 개발
      • AJAX
    • ML Ops
    • Profile
    • 음식점
    • 배낭여행
    • 컴퓨터공학
      • 알고리즘 공부
      • C++
      • Sever 스터디
      • Java spring
      • 알고리즘 _ 문제해결
      • 딥러닝
      • Java 정리
      • Python
      • LeetCode 1000
      • Machine Learning Study
      • Sign language Detection Pro..
      • LeetCode Solutions
    • 비콘
    • 데일리 리포트
    • 유학일기
      • 영어 공부
      • Daily
    • AI Master Degree
      • Data Mining
      • AI and Data engineering
      • Math Foundations for Decisi..
      • Natural Language Processing

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • two pointer
  • 알고리즘문제해결
  • 문제해결능력
  • 백준
  • 개발자
  • 온라인저지
  • 파이썬
  • 취업준비
  • c++
  • 리트코드
  • BFS
  • 딥러닝
  • Python
  • 취준
  • 릿코드
  • 딕셔너리
  • LeetCode
  • 알고리즘
  • 개발자 취업준비
  • DFS

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
saurus2

Saurus2

컴퓨터공학/LeetCode 1000

[LeedCode] 53. Maximum Subarray 파이썬 Easy

2021. 11. 4. 11:58

문제 해석:

정수 배열이 주어진다. 연속적으로 이어진 부분합중 최대값을 구해라.

문제 해설:

1. Brute Force 로 모든 값을 찾아보는 방법외에, 다이나믹 프로그래밍으로 값을 구할 수 있다.
2. 현재 값과 최대값을 담을 변수를 저장하고
3. 두번째 값부터, 최대값을 찾아나간다.
4. 현재 위치와, 이전 위치 + 현재 위치의 값을 비교해서 최대값을 저장한다.
5. 최대값 변수와 4번에서 비교한 최대값을 비교하여 최대값을 구한다.

예제 : -2, 1, -3, 4, -1, 2, 1, -5, 4 에서, 처음 -2은 저장하고 시작한다.
-2와 1의 합과, 1의 값을 비교했을때 1이 더크니 더하지않고 1을 저장한다.
-3에서 -3과 1과의 합 비교시, 합이 더 크기 때문에 값을 갱신한다. 
4로 넘어가기전에, 최대값은 1이며 현재 값은 -2이다.
4로 넘어왔을때, -1과 4의 합보다 4가 크니까, 현재값은 4로, 최대값도 4로 변경된다.
이 방법이 반복되면, 여태 더했던 값보다 큰값이 나오게 된다면 이전값들은 버리는게 되며, 
모두 수행됬을때 최대 연속부분합을 구할 수 있다. 

53. Maximum Subarray

Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.

A subarray is a contiguous part of an array.

 

Example 1:

Input: nums = [-2,1,-3,4,-1,2,1,-5,4] Output: 6 Explanation: [4,-1,2,1] has the largest sum = 6.

Example 2:

Input: nums = [1] Output: 1

Example 3:

Input: nums = [5,4,-1,7,8] Output: 23

 

Constraints:

  • 1 <= nums.length <= 105
  • -104 <= nums[i] <= 104

소스코드:

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        curr = maxV = nums[0]
        for num in nums[1:]:
            curr = max(num, curr + num)
            maxV = max(maxV, curr)
        return maxV

'컴퓨터공학 > LeetCode 1000' 카테고리의 다른 글

[LeedCode] 1167. Minimum Cost to Connect Sticks 파이썬 Medium  (0) 2021.11.06
[LeedCode]819. Most Common Word 파이썬 Easy  (0) 2021.11.04
[LeedCode] 175. Combine Two Tables SQL Easy  (0) 2021.11.03
[LeedCode] 423. Reconstruct Original Digits from English 파이썬 Medium  (0) 2021.11.03
[LeetCode] 3. Longest Substring Without Repeating Characters 파이썬 Medium  (0) 2021.11.02
    '컴퓨터공학/LeetCode 1000' 카테고리의 다른 글
    • [LeedCode] 1167. Minimum Cost to Connect Sticks 파이썬 Medium
    • [LeedCode]819. Most Common Word 파이썬 Easy
    • [LeedCode] 175. Combine Two Tables SQL Easy
    • [LeedCode] 423. Reconstruct Original Digits from English 파이썬 Medium
    saurus2
    saurus2
    Simple is Best

    티스토리툴바