T155044 最後一次出現的位置

2021-10-10 09:22:11 字數 1016 閱讀 3789

思路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

1 ≤ arr[i] ≤ 10^9

①:看到題目一定有小夥伴是通過陣列來標記位置做的,但是10的九次方顯然已經超過的陣列的大小,當值恰好是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 也是正確答案。你的演算法應該具有線性時間複雜度。你能否僅使用常數空間複雜度來實現?首先...