python--力扣2148题元素计数问题

题目:

给你一个整数数组 nums ,统计并返回在 nums 中同时至少具有一个严格较小元素和一个严格较大元素的元素数目。

例如 输入:nums = [-3,3,3,90]

        输出:2

解释:元素 3 :严格较小元素是元素 -3 ,严格较大元素是元素 90 。

由于有两个元素的值为 3 ,总计有 2 个元素都满足在 nums 中同时存在一个严格较小元素和一个严格较大元素。

解题思路:

首先通过读题,我们可以得出解题的核心在于统计最大元素和最小元素之间的元素数目。

那么问题就变得简单起来:

1.先对数组内元素按从小到大或从大到小顺序排序,头尾就是值最小和最大的元素,

2.去除数组头尾最大和最小元素

3.计算数组长度(数组长度就是nums中具有严格较小元素和严格较大元素的元素数目啦!)

注意:头尾可能重复,比如nums=[-1,-1,1,1,2,2],应去掉重复的头尾,再计算数组长度。

源代码:

def numbers(l):
    sorted(l)
    if l==[] or l[0]==l[-1] :
        num=0#数组为空或数组内元素相等,返回0
    else:
        #掐头
        a=l[0]
        l.remove(l[0])
        i = 0
        while l[i]==a:
            l.remove(l[i])
            i=i+1
        #去尾
        b=l[-1]
        l.remove(l[-1])
        j = -1
        while l[j]==b:
            l.remove(l[j])
            j=j-1
        num=len(l)
    return num

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值