日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1024. 视频拼接 的两种解法

發布時間:2024/3/26 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1024. 视频拼接 的两种解法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1024. 視頻拼接

    • 1,動態規劃
    • 2,貪心
    • 待續

??你將會獲得一系列視頻片段,這些片段來自于一項持續時長為 T 秒的體育賽事。這些片段可能有所重疊,也可能長度不一。
??視頻片段 clips[i] 都用區間進行表示:開始于 clips[i][0] 并于 clips[i][1] 結束。我們甚至可以對這些片段自由地再剪輯,例如片段 [0, 7] 可以剪切成 [0, 1] + [1, 3] + [3, 7] 三部分。
??我們需要將這些片段進行再剪輯,并將剪輯后的內容拼接成覆蓋整個運動過程的片段([0, T])。返回所需片段的最小數目,如果無法完成該任務,則返回 -1 。

示例 1:

??輸入:clips = [[0,2],[4,6],[8,10],[1,9],[1,5],[5,9]], T = 10
??輸出:3
??解釋:
??我們選中 [0,2], [8,10], [1,9] 這三個片段。
??然后,按下面的方案重制比賽片段:
??將 [1,9] 再剪輯為 [1,2] + [2,8] + [8,9] 。
??現在我們手上有 [0,2] + [2,8] + [8,10],而這些涵蓋了整場比賽 ??[0, 10]。
示例 2:

??輸入:clips = [[0,1],[1,2]], T = 5
??輸出:-1
??解釋:
??我們無法只用 [0,1] 和 [1,2] 覆蓋 [0,5] 的整個過程。
示例 3:

??輸入:clips = [[0,1],[6,8],[0,2],[5,6],[0,4],[0,3],[6,7],[1,3],[4,7],??[1,4],[2,5],[2,6],[3,4],[4,5],[5,7],[6,9]], T = 9
??輸出:3
??解釋:
??我們選取片段 [0,4], [4,7] 和 [6,9] 。
示例 4:

??輸入:clips = [[0,4],[2,8]], T = 5
??輸出:2
??解釋:
??注意,你可能錄制超過比賽結束時間的視頻。

提示:

??1 <= clips.length <= 100
??0 <= clips[i][0] <= clips[i][1] <= 100
??0 <= T <= 100

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/video-stitching
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

1,動態規劃

int videoStitching(int** clips, int clipsSize, int* clipsColSize, int T) {int dp[T + 1];memset(dp, 0x3f, sizeof(dp));dp[0] = 0;for (int i = 1; i <= T; i++) {for (int j = 0; j < clipsSize; j++) {if (clips[j][0] < i && i <= clips[j][1]) {dp[i] = fmin(dp[i], dp[clips[j][0]] + 1);}}}return dp[T] == 0x3f3f3f3f ? -1 : dp[T]; }

2,貪心

1,找出相同起點中最大的終點(遍歷所有片段,clipsSize個)
2,在1的結果里找出不同起點中最大的終點(遍歷所有起點,T個)

int videoStitching(int** clips, int clipsSize, int* clipsColSize, int T) {int maxEnd[T+1];//為應對T=0的情況memset(maxEnd, 0, (T+1)*sizeof(int));int furthest = 0, cnt = 0, start = 0;for (int i = 0; i < clipsSize; i++) {if (clips[i][0] < T) {maxEnd[ clips[i][0] ] = fmax( maxEnd[ clips[i][0] ] , clips[i][1]);}}for (int i = 0; i < T; i++) {furthest = fmax(furthest, maxEnd[i]);if (i == furthest) {//中間有斷點和總時長不夠是一樣的現象return -1;}if (i == start) {//start為開始使用新區間的位置cnt++;start = furthest;}}return cnt; }

待續

對于這兩種算法,都有點迷。

總結

以上是生活随笔為你收集整理的1024. 视频拼接 的两种解法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。