查找(洛谷P2249题题解,C++语言描述)
生活随笔
收集整理的這篇文章主要介紹了
查找(洛谷P2249题题解,C++语言描述)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目要求
題目鏈接
分析
可以用內置函數直接解:lower_bound(a.begin(), a.end(), i)
如果自己寫二分查找也行,注意是第一個出現的,所以不注意的話求的可不是第一個呀!
另,Java代碼如下,TLE+MLE,垃圾語言!
import java.io.*; import java.util.*;// TLE+MLE public class Main {public static void main(String[] args) throws IOException {BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));String[] line = bf.readLine().split("\\s+");int n = Integer.parseInt(line[0]), m = Integer.parseInt(line[1]);List<Integer> list = new ArrayList<>(n);line = bf.readLine().split("\\s+");for (int i = 0; i < n; i++) {list.add(Integer.parseInt(line[i]));}line = bf.readLine().split("\\s+");for (int i = 0; i < m; i++) {System.out.print(list.indexOf(Integer.parseInt(line[i])) + " ");}bf.close();}}AC代碼
#include <iostream>using namespace std;int nums[1000001];int main() {int n, m, query;cin >> n >> m;// 因為結果計算的下標是從1開始的for (int i = 1; i <= n; i++) {cin >> nums[i];}for (int i = 0; i < m; i++) {cin >> query;int result = lower_bound(nums+1, nums+n+1, query)-nums;cout << ((query == nums[result]) ? result : -1) << " ";}return 0; }總結
以上是生活随笔為你收集整理的查找(洛谷P2249题题解,C++语言描述)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谨慎Asp.net中static变量的用
- 下一篇: 关于.NET中的Server push技