I am a teacher!

导航

习题解析之:查找特征数

【问题描述】

在一组空格分隔的自然数中,有些数出现的次数与该数相等,找出符合这个特征的数,并输出其中的最大数。如果不存在这样的数,则输出-1‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬。

输入格式
在一行中输入若干个自然数,数字之间用空格分隔

输出格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
输出满足上述条件的数,如果不存在这样的数,则输出-1‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

示例
输入:
3 3 3 8 8 8 8 8 8 8 8 1 4 5 6 7

输出:
8

【编程思路1】

        由输入的无序整数序列创建一个列表 ls,用列表 ls 中的元素创建一个集合 s (s = set(ls)),再用推导式 [x for x in s if ls.count(x) == x] 创建一个列表 lt,lt 列表中的元素就是 ls 列表中出现次数和其数值相等的整数。

        若 lt 非空,输出其最大值;若 lt 为空,输出 -1 。

        编写的源程序如下:

        image

 【编程思路2】

        由输入的无序整数序列创建一个列表 ls。创建一个空字典 d ,遍历 ls 中的各元素,将元素的值作为键,该元素出现的次数作为值,加入到字典 d 中。

        再创建一个空列表 lt ,遍历字典 d 中的键值对,将键和值相等的键值对的键作为元素插入到列表 lt 中。

        若 lt 非空,输出其最大值;若 lt 为空,输出 -1 。

        编写的源程序如下:

        image

posted on 2025-12-03 15:49  aTeacher  阅读(0)  评论(0)    收藏  举报