思路ac**
給你乙個有 n 個數的序列 arr,還有 m 次詢問(下標從 1 開始)。對於每次詢問,將會給你乙個整數 val,請你找出 val 在序列 arr 中最後一次出現的位置的下標。
第一行輸入兩個整數 n 和 m。
第二行輸入 n 個整數。
接下來 m 行,每行輸入乙個整數 val。
對於每次詢問,請你輸出乙個整數,表示當前詢問的 val 在素組中最後一次出現的下標。如果在序列中未出現,請直接輸出 −1。
輸入
5 2輸出1 2 3 4 242
4說明/提示5
資料範圍:
1 ≤ n,m ≤ 10^5①:看到題目一定有小夥伴是通過陣列來標記位置做的,但是10的九次方顯然已經超過的陣列的大小,當值恰好是10^9時,是找不到對應的位置。1 ≤ arr[i] ≤ 10^9
②:此時需要使用c++的stl庫里的map函式。下面來熟悉下map的常見操作。
定義:mapmp, 定義乙個對映前型別為typename(鍵key)和對映後型別typename(value值)。typename可以為int,long long,char ,string等型別。通過值訪問:和訪問普通的陣列是一樣的。mp[1]=1;
當對映前的鍵不存在時,mp預設value值是0.
#include
#include
using
namespace std;
map <
long
long
,long
long
> mp;
intmain()
for(
int i=
1;i<=m;i++
)return0;
}
位運算 只出現一次的的數字
異或的兩個值 相同為假,不同為真 交換兩個整數的值時可以不用第三個引數a a b a b b b a b a乙個只出現一次的數字。乙個整型陣列裡除了乙個數字之外,其他的數字都出現了偶數次。請寫程式找出這個只出現一次的數字。int num 0 if array.length 0 return num ...
位運算 只出現一次的的數字
異或的兩個值 相同為假,不同為真 交換兩個整數的值時可以不用第三個引數a a b a b b b a b a乙個只出現一次的數字。乙個整型陣列裡除了乙個數字之外,其他的數字都出現了偶數次。請寫程式找出這個只出現一次的數字。int num 0 if array.length 0 return num ...
位運算 只出現一次的數字III
給定乙個整數陣列 nums,其中恰好有兩個元素只出現一次,其餘所有元素均出現兩次。找出只出現一次的那兩個元素。示例 輸入 1,2,1,3,2,5 輸出 3,5 注意 結果輸出的順序並不重要,對於上面的例子,5,3 也是正確答案。你的演算法應該具有線性時間複雜度。你能否僅使用常數空間複雜度來實現?首先...