• 【Kata Daily 190919】Sort Out The Men From Boys(排序)


    题目:

    Scenario

    Now that the competition gets tough it will Sort out the men from the boys .

    Men are the Even numbers and Boys are the odd !alt !alt


    Task

    Given an array/list [] of n integers , Separate The even numbers from the odds , or Separate the men from the boys !alt !alt


    Notes

    • Return an array/list where Even numbers come first then odds

    • Since , Men are stronger than Boys , Then Even numbers in ascending order While odds in descending .

    • Array/list size is at least *4*** .

    • Array/list numbers could be a mixture of positives , negatives .

    • Have no fear , It is guaranteed that no Zeroes will exists . !alt

    • Repetition of numbers in the array/list could occur , So (duplications are not included when separating).


    Input >> Output Examples:

    menFromBoys ({7, 3 , 14 , 17}) ==> return ({14, 17, 7, 3})

    Explanation:

    Since , { 14 } is the even number here , So it came first , then the odds in descending order {17 , 7 , 3} .


    menFromBoys ({-94, -99 , -100 , -99 , -96 , -99 }) ==> return ({-100 , -96 , -94 , -99})

    Explanation:

    • Since , { -100, -96 , -94 } is the even numbers here , So it came first in ascending order , *then** *the odds in descending order { -99 }

    • Since , (Duplications are not included when separating) , then you can see only one (-99) was appeared in the final array/list .


    menFromBoys ({49 , 818 , -282 , 900 , 928 , 281 , -282 , -1 }) ==> return ({-282 , 818 , 900 , 928 , 281 , 49 , -1})

    Explanation:

    • Since , {-282 , 818 , 900 , 928 } is the even numbers here , So it came first in ascending order , then the odds in descending order { 281 , 49 , -1 }

    • Since , (Duplications are not included when separating) , then you can see only one (-282) was appeared in the final array/list .

    题目很长,其实大意就是:找出list中的偶数和奇数的不重复组合,偶数进行升序,奇数进行降序排列

    解题办法:

    def men_from_boys(arr):
        return sorted([i for i in set(arr) if i%2==0]) + sorted([i for i in set(arr) if i%2!=0], reverse=True)

    其他解题思路:

    def men_from_boys(arr):
        men = []
        boys = []
        for i in sorted(set(arr)):
            if i % 2 == 0:
                men.append(i)
            else:
                boys.append(i)
        return men + boys[::-1]

    知识点:

    1、去除重复项使用set()

    2、排序使用sorted(list, reverse=False)

    3、奇数偶数获取

  • 相关阅读:
    RabbitMq、ActiveMq、ZeroMq 和 kafka 比较
    Mysql:The table‘xxxx’is full
    忘记了MariaDB root密码的解决办法
    在CentOS 7 MySQL / MariaDB
    SQL批量删除与批量插入
    org.springframework.web.servlet.PageNotFound No mapping found for HTTP request with URI [/AssetRepair/assetRepairController/test.do] in DispatcherServlet with name 'assetrepair'
    <spring:message> 标签
    Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解
    实现JMS规范的ActiveMQ
    常见消息队列协议总结
  • 原文地址:https://www.cnblogs.com/bcaixl/p/11549243.html
Copyright © 2020-2023  润新知