LeetCode 1124 表現良好的最長時間段

2021-10-03 17:38:34 字數 976 閱讀 9306

給你乙份工作時間表 hours,上面記錄著某一位員工每天的工作小時數。我們認為當員工一天中的工作小時數大於 8 小時的時候,那麼這一天就是「勞累的一天」。所謂「表現良好的時間段」,意味在這段時間內,「勞累的天數」是嚴格 大於「不勞累的天數」。請你返回「表現良好時間段」的最大長度。

示例 1:

輸入:hours = [9,9,6,0,6,6,9]

輸出:3

解釋:最長的表現良好時間段是 [9,9,6]。

1 <= hours.length <= 10000

0 <= hours[i] <= 16

解題思路:

輸入:hours = [9,9,6,0,6,6,9]

用1代表大於8的元素,用-1代表小於等於8的元素,得到乙個陣列[1,1,-1,-1,-1,-1,1]記為arr.

要求「勞累的天數」>「不勞累的天數」的最大長度,即arr陣列的子段和》0的 且 是最長的

求sum和陣列,sum=[0, 1, 2, 1, 0, -1, -2, -1],sum即字首陣列,sum[i]就是arr[0]+arr[1]+....arr[i-1]的值

這樣求子段和的時候,比如arr[2]+arr[3]+...+arr[5]的和直接用sum[6] - sum[2]即可.

因此,找到乙個(i,j),使得sum[j] - sum[i] > 0。且j-i最大

public int longestwpi(int hours) 

system.out.println(arrays.tostring(arr));

int sum=new int[arr.length+1];

int cur_sum=0;

for(i=0;i0.

int max_sum=0;

int len=0;

for(i=0;i0)

}} return max_sum;

}

1124 表現良好的最長時段

同類題目 題目描述 給你乙份工作時間表 hours,上面記錄著某一位員工每天的工作小時數。我們認為當員工一天中的工作小時數大於 8 小時的時候,那麼這一天就是 勞累的一天 所謂 表現良好的時間段 意味在這段時間內,勞累的天數 是嚴格 大於 不勞累的天數 請你返回 表現良好時間段 的最大長度。解題思路...

1124 表現良好的最長時間段

題意 給你乙份工作時間表 hours,上面記錄著某一位員工每天的工作小時數。我們認為當員工一天中的工作小時數大於 8 小時的時候,那麼這一天就是 勞累的一天 所謂 表現良好的時間段 意味在這段時間內,勞累的天數 是嚴格 大於 不勞累的天數 請你返回 表現良好時間段 的最大長度。示例 1 輸入 hou...

1124 表現良好的最長時間段 字首和 雜湊表

難度 中等 題目描述 解題思路 看到這種 要求連續區間而且滿足一定條件,最大 最小等等都可以考慮一下字首和法。字首和最大的醫用就是可以在o 1 時間內得到任意乙個區間 i,j 的和。在這道題裡,當工作時間大於8,設定成1,小於8等於 1,由此計算字首和 如果字首和大於0,說明從0開始的區間裡到當前位...