LintCode 1690. 朋友推荐(二分插入)
生活随笔
收集整理的這篇文章主要介紹了
LintCode 1690. 朋友推荐(二分插入)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
某交友網站會給除了第一個用戶以外的每個新注冊的用戶推薦一位之前已經注冊過并且性格值和他最相近的用戶,如果有多人滿足條件則選擇性格值較小的。
給定數組val[]表示按時間順序注冊的 n 位用戶的性格值,輸出一個大小為 n-1 的數組,表示系統給這些人推薦的用戶的性格值。
樣例 1: 輸入: val=[8,9,7,3,0,5,11] 輸出: [8,8,7,3,3,9] 解釋: 令 ans = [] 第 2 個數為 9,前面只有第 1 個數 8,此時 ans = [8] 第 3 個數為 7,前面的數有 8, 9,與 7 性格值最小的為 8,此時 ans = [8, 8] 第 4 個數為 3,前面的數有 8, 9, 7,與 3 性格值最小的為 7,此時 ans = [8, 8, 7] 第 5 個數為 0,前面的數有 8, 9, 7, 3,與 0 性格值最小的為 3,此時 ans = [8, 8, 7, 3] 第 6 個數為 5,前面的數有 8, 9, 7, 3, 0,與 5 性格值最小的為 3,此時 ans = [8, 8, 7, 3, 3] 第 7 個數為 11,前面的數有 8, 9, 7, 3, 0, 5,與 11 性格值最小的為 9,此時 ans = [8, 8, 7, 3, 3, 9]樣例 2: 輸入: val=[465, 5464, 6467, 6466779, 6461, 56] 輸出: [465,5464,6467,6467,465] 解釋: 令 ans = [] 第 2 個數為 5464,前面只有第 1 個數 465,此時 ans = [465] 第 3 個數為 6467,前面的數有 465, 5464,與 6467 性格值最小的為 5464,此時 ans = [465, 5464] 第 4 個數為 6466779,前面的數有 465, 5464, 6467,與 6466779 性格值最小的為 6467,此時 ans = [465, 5464, 6467] 第 5 個數為 6461,前面的數有 465, 5464, 6467, 6466779,與 6461 性格值最小的為 6467,此時 ans = [465, 5464, 6467, 6467] 第 6 個數為 56,前面的數有 465, 5464, 6467, 6466779, 6461,與 56 性格值最小的為 465,此時 ans =[465, 5464, 6467, 6467, 465]注意事項 2<=n<=100000 0<=val<=1000000類似題目:LeetCode 315. 計算右側小于當前元素的個數(二叉查找樹&二分查找&歸并排序逆序數總結)
2. 解題
- 給一個空數組,依次把性格值二分插入到其中
- 檢查插入位置前后跟我 絕對值較小 的取為答案
- 變形版 二分查找請參考
100% 數據通過測試
總耗時 653 ms
您的提交打敗了 35.48% 的提交!
總結
以上是生活随笔為你收集整理的LintCode 1690. 朋友推荐(二分插入)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 决策树(Decision Tree,DT
- 下一篇: LeetCode 611. 有效三角形的