某交友**會給除了第乙個使用者以外的每個新註冊的使用者推薦一位之前已經註冊過並且性格值和他最相近的使用者,如果有多人滿足條件則選擇性格值較小的。
給定陣列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. 計算右側小於當前元素的個數(二叉查詢樹&二分查詢&歸併排序逆序數總結)
class
solution
; vector<
int> t;
//二分插入陣列
t.push_back
(val[0]
);vector<
int>
ans(val.
size()
-1);
int i, idx, k =
0, f, b;
for(i =
1; i < val.
size()
; i++
,k++
)return ans;
}int
bs(vector<
int>
& a,
int& target)
}return-1
;}};
100% 資料通過測試
總耗時 653 ms
您的提交打敗了 35.48% 的提交!
169 多數元素
解題思路 1.將陣列從小到大排序 2.第nums.length 2處的元素就是我們要求的元素,直接返回nums nums.length 2 即可 實現 class solution 解題思路 1.變數val,初始值為nums 0 記錄當前的值,計數器cnt,記錄當前元素累計出現的情況,初始值為1 2...
169 多數元素
給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。示例 1 輸入 3,2,3 輸出 3 示例 2 輸入 2,2,1,1,1,2,2 輸出 2 分析 解法一 我們可以先排序,然後輸出在陣列 現次數大於...
169 多數元素
題目描述 給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。示例 1 輸入 3,2,3 輸出 3 示例 2 輸入 2,2,1,1,1,2,2 輸出 2 方法1 直接使用unordered map進行...