2024年4月12日饿了么春招实习试题【第一题:质数和合数】-题目+题解+在线评测【模拟】

2024年4月12日饿了么春招实习试题【第一题:质数和合数】-题目+题解+在线评测【模拟】

题目描述:

塔子哥有一个数组,她想知道这个数组不同的质数和不同的合数共有多少个。

合数是指在大于1的整数中除了能被1和本身整除外,还能被其他数 (0除外) 整除的数。

输入描述

第一行入一个整数 1 < = n < = 2 × 1 0 5 1<=n<=2\times 10^5 1<=n<=2×105表示数组长度。 第二行输入 n个整数表示数组 a i ( 1 < = a i < = 2 × 1 0 5 ) a_i(1<=a_i<=2\times 10^5) ai(1<=ai<=2×105)

输出描述

输出一个整数。

样例

输入

auto 复制代码
3
20 2 4

输出

auto 复制代码
3

说明

不同的合数有20和4,质数有2,所以有3种。

OJ链接:
https://codefun2000.com/p/P1816

解题思路一:质数+合数=除去1的所有正整数

除了1以外,一个大于0的整数要么是质数要么是合数,所以只需要计算集合的元素数量即可。如果数组包含1,则减去一个元素。

python 复制代码
n = int(input())
nums = list(map(int, input().split()))
st = set(nums)
# if 1 in st:
#     print(len(st) - 1)
# else:
#     print(len(st))
print(len(st) - (1 if 1 in st else 0))

时间复杂度:O(n)

空间复杂度:O(n)

解题思路二:java

python 复制代码
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class UniqueIntegers {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        Set<Integer> sett = new HashSet<>();
        for (int i = 0; i < n; i++) {
            int value = scanner.nextInt();
            sett.add(value);
        }
        int count = sett.size();
        if (sett.contains(1)) {
            count -= 1;
        }
        System.out.println(count);
    }
}

时间复杂度:O(n)

空间复杂度:O(1)

解题思路三:c++

python 复制代码
#include <iostream>
#include <set>
using namespace std;
int main() {
    int n;
    cin >> n;
    set<int> sett;
    for (int i = 0; i < n; i++) {
        int value;
        cin >> value;
        sett.insert(value);
    }
    int count = sett.size();
    if (sett.find(1) != sett.end()) {
        count--;
    }
    cout << count << endl;
    return 0;
}

时间复杂度:O(n)

空间复杂度:O(1)

相关推荐
xiaocainiao8815 分钟前
Python 实战:构建可扩展的命令行插件引擎
开发语言·python
ChoSeitaku10 分钟前
NO.3数据结构栈和队列|顺序栈|共享栈|链栈|顺序队|循环队列|链队|双端队列|括号匹配|中缀表达式转后缀|后缀表达式求值
数据结构·microsoft
碧海蓝天202228 分钟前
C++法则21:避免将#include放在命名空间内部。
开发语言·c++
兮动人35 分钟前
Java应用全链路故障排查实战指南:从系统资源到JVM深度诊断
java·开发语言·jvm
R-sz1 小时前
导出word并且插入图片
开发语言·c#·word
CodeWithMe1 小时前
【读书笔记】《C++ Software Design》第一章《The Art of Software Design》
开发语言·c++
脑袋大大的1 小时前
判断当前是否为钉钉环境
开发语言·前端·javascript·钉钉·企业应用开发
卷福同学1 小时前
【AI编程】AI+高德MCP不到10分钟搞定上海三日游
人工智能·算法·程序员
mit6.8241 小时前
[Leetcode] 预处理 | 多叉树bfs | 格雷编码 | static_cast | 矩阵对角线
算法
Wy. Lsy2 小时前
Kotlin基础学习记录
开发语言·学习·kotlin