Lesson 9 question 2 MaxSliceSum

源地址

https://app.codility.com/programmers/lessons/9-maximum_slice_problem/max_slice_sum/

MaxSliceSum

給定一個包含有N個整數的非空數組A,一個組合 (P, Q) ,其中0 ≤ P ≤ Q < N,被叫做A的一個切片,切片 (P, Q) 的和 是 A[P] + A[P+1] + … + A[Q] 的合計.

寫一個函數,給定數組A,返回A中切片和的最大值

	class Solution { 
		public int solution(int[] A); 
	}

比如:

A[0] = 3  A[1] = 2  A[2] = -6 A[3] = 4  A[4] = 0

函數返回 5 ,因爲:

  • 切片(3, 4)的和爲 4,
  • 切片(2, 2)的和爲 -6,
  • 切片(0, 1)的和爲 5,
  • 沒有切片的和比切片(0, 1)的和大,

假定:

  • N是範圍在[1…1,000,000]的整數
  • A中的每個元素都是範圍在 [−1,000,000…1,000,000]的整數
  • 結果是範圍在[−2,147,483,648…2,147,483,647]的整數

第一步

根據 教程 ,計算出到每個點爲止最大的切片的合,然後總是留下最大的,最後得到最大的切片合

 	public int solution(int[] A) {
        int max = A[0];
        int preMax = A[0];
        for (int i = 1; i < A.length; i++) {
            preMax = Math.max(preMax + A[i], A[i]);
            max = Math.max(max, preMax);
        }
        return max;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章