航班預訂統計


問題描述: 這里有 n 個航班,它們分別從 1 到 n 進行編號。 我們這兒有一份航班預訂表,表中第 i 條預訂記錄 bookings[i] = [i, j, k] 意味着我們在從 i 到 j 的每個航班上預訂了 k 個座位。 請你返回一個長度為 n 的數組 answer,按航班編號順序返回每個航班上預訂的座位數。 示例: 輸入:bookings = [[1,2,10],[2,3,20],[2,5,25]], n = 5 輸出:[10,55,45,25,25]

提示:

  • 1 <= bookings.length <= 20000
  • 1 <= bookings[i][0] <= bookings[i][1] <= n <= 20000
  • 1 <= bookings[i][2] <= 10000

解題思路:第一次看到這個題,直接就是遍歷一遍,想法很好,可是LeetCode很殘酷,直接超時,下面直接說優化的代碼:

代碼如下:

class Solution { public int[] corpFlightBookings(int[][] arr, int n) { int[] array = new int[n]; for(int i = 0;i<arr.length;i++){ array[arr[i][0]-1] += arr[i][2]; if(arr[i][1]<n) array[arr[i][1]] -= arr[i][2]; } for(int i = 1;i<n;i++){ array[i] += array[i-1]; } return array; } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM