在名单里吗
第一行给出名单大小 n,第二行给出 n 个整数(名单),第三行给出询问数 q,第四行给出 q 个整数。
对每个询问的数,如果在名单里输出 "是",否则输出 "否",每行一个。
名单中同一个数可能出现多次。
- 输入
- 1 ≤ n ≤ 1,000,1 ≤ q ≤ 1,000,所有数都是 -1,000,000,000 到 1,000,000,000 之间的整数
- 输出
- q 行,每行 "是" 或 "否"
3 10 20 300 4 20 1 300 30
是 否 是 否
第一行给出名单大小 n,第二行给出 n 个整数(名单),第三行给出询问数 q,第四行给出 q 个整数。
对每个询问的数,如果在名单里输出 "是",否则输出 "否",每行一个。
名单中同一个数可能出现多次。
3 10 20 300 4 20 1 300 30
是 否 是 否
运行时这些行会依次作为 input()/标准输入传入(运行中不会等待输入)。
$ 就绪
请在电脑上打开以编写和运行代码。在手机上可以查看题目和题解。
判断是否在列表中的工具:Python x in a,JavaScript、TypeScript a.includes(x),C# a.Contains(x)(数组需要 using System.Linq),C++ std::find(a.begin(), a.end(), x) != a.end()(C++23 有 std::ranges::contains),Java 数组用 Arrays.stream(a).anyMatch(v -> v == x),C 写一个循环函数。
Craykon 是 a.包含(x)。
三个陷阱:① 把数字当字符串查找会匹配到片段:在行 "10 20 300" 里查 "1"、"30" 都会显示存在。
② Java 的 Arrays.asList(a).contains(x) 在 a 是 int[] 时得到的是 List<int[]>(只装一个数组的列表),所以永远是 false,而且能通过编译。
③ 在循环里写 else return 0 会只看第一个就判定“没有”。
“没有”只能在全部看完之后才能说。
这些工具都是从前往后逐个查看,每次询问最多看 n 个;询问非常多时用集合,如 Python set、Java HashSet。
n = int(input())a = list(map(int, input().split()))q = int(input())for x in map(int, input().split()): print("是" if x in a else "否")const nums = require("fs").readFileSync(0, "utf8").trim().split(/\s+/).map(Number);const n = nums[0];const a = nums.slice(1, 1 + n);const queries = nums.slice(2 + n);console.log(queries.map((x) => (a.includes(x) ? "是" : "否")).join("\n"));import { readFileSync } from "node:fs";const nums: number[] = readFileSync(0, "utf8").trim().split(/\s+/).map(Number);const n: number = nums[0];const a: number[] = nums.slice(1, 1 + n);const queries: number[] = nums.slice(2 + n);console.log(queries.map((x) => (a.includes(x) ? "是" : "否")).join("\n"));import java.util.Arrays;import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] a = new int[n]; for (int i = 0; i < n; i++) a[i] = sc.nextInt(); int q = sc.nextInt(); StringBuilder out = new StringBuilder(); for (int k = 0; k < q; k++) { int x = sc.nextInt(); boolean found = Arrays.stream(a).anyMatch(v -> v == x); out.append(found ? "是" : "否").append('\n'); } System.out.print(out); }}using System;using System.Linq; class Program{ static void Main() { Console.ReadLine(); int[] a = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray(); Console.ReadLine(); foreach (string s in Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries)) { int x = int.Parse(s); Console.WriteLine(a.Contains(x) ? "是" : "否"); } }}#include <algorithm>#include <iostream>#include <vector> int main() { int n, q, x; std::cin >> n; std::vector<int> a(n); for (int& v : a) std::cin >> v; std::cin >> q; for (int k = 0; k < q; k++) { std::cin >> x; bool found = std::find(a.begin(), a.end(), x) != a.end(); std::cout << (found ? "是" : "否") << "\n"; }}#include <stdio.h> int contains(const int *a, int n, int x) { for (int i = 0; i < n; i++) if (a[i] == x) return 1; return 0;} int main(void) { int n, q, x, a[1000]; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &a[i]); scanf("%d", &q); for (int k = 0; k < q; k++) { scanf("%d", &x); puts(contains(a, n, x) ? "是" : "否"); } return 0;}n = 控制台.读行().转数字();a = 控制台.读数字();q = 控制台.读行().转数字();遍历 (x 在 控制台.读数字()){ 控制台.输出(a.包含(x) ? "是" : "否");}