当前位置: 首页 > article >正文

leetcode:2164. 对奇偶下标分别排序(python3解法)

难度:简单

给你一个下标从 0 开始的整数数组 nums 。根据下述规则重排 nums 中的值:

  1. 按 非递增 顺序排列 nums 奇数下标 上的所有值。
    • 举个例子,如果排序前 nums = [4,1,2,3] ,对奇数下标的值排序后变为 [4,3,2,1] 。奇数下标 1 和 3 的值按照非递增顺序重排。
  2. 按 非递减 顺序排列 nums 偶数下标 上的所有值。
    • 举个例子,如果排序前 nums = [4,1,2,3] ,对偶数下标的值排序后变为 [2,1,4,3] 。偶数下标 0 和 2 的值按照非递减顺序重排。

返回重排 nums 的值之后形成的数组。

示例 1:

输入:nums = [4,1,2,3]
输出:[2,3,4,1]
解释:
首先,按非递增顺序重排奇数下标(1 和 3)的值。
所以,nums 从 [4,1,2,3] 变为 [4,3,2,1] 。
然后,按非递减顺序重排偶数下标(0 和 2)的值。
所以,nums 从 [4,1,2,3] 变为 [2,3,4,1] 。
因此,重排之后形成的数组是 [2,3,4,1] 。

示例 2:

输入:nums = [2,1]
输出:[2,1]
解释:
由于只有一个奇数下标和一个偶数下标,所以不会发生重排。
形成的结果数组是 [2,1] ,和初始数组一样。 

提示:

  • 1 <= nums.length <= 100
  • 1 <= nums[i] <= 100

题解:

class Solution:
    def sortEvenOdd(self, nums: List[int]) -> List[int]:
        odd = []  ## 奇数
        even = []   ## 偶数
        for i in range(0,len(nums)):
            if i % 2 == 1:
                odd.append(nums[i])
            else:
                even.append(nums[i])
        odd.sort(reverse=True)
        even.sort()
        final_res = []
        y = []
        ## 判断奇数偶数列表长度不一致时的不同处理方式
        if len(odd) > len(even):
            y.append(odd[-1])
            odd = odd[0:len(odd)-1]
        elif len(even) > len(odd):
            y.append(even[-1])
            even = even[0:len(even)-1]
            for a,b in zip(even,odd):
                final_res.append(a)
                final_res.append(b)
            final_res.append(y[0])
        else:
            for a,b in zip(even,odd):
                final_res.append(a)
                final_res.append(b)
        return final_res 

        


http://www.kler.cn/a/569338.html

相关文章:

  • [代码规范]接口设计规范
  • uni.getLocation 微信小程序中获取位置失败原因
  • spring注解开发(Spring整合JUnit+MyBatis)(7)
  • 常见的正则匹配规则
  • 深入解析SQL Server高级SQL技巧
  • 微店商品详情API接口实战指南:从零实现商品数据自动化获取
  • buuctf.web 64-96
  • 计算机毕业设计SpringBoot+Vue.js贸易行业CRM系统(源码+文档+PPT+讲解)
  • flutter 专题 八十二 Flutter路由框架Fluro简介
  • Immich自托管服务的本地化部署与随时随地安全便捷在线访问数据
  • 专线物流公共服务平台:全面提升专线物流效率
  • 《认知·策略·跃迁:新能源汽车工程师的深度学习系统构建指南》
  • Odoo免费开源CRM技术实战:从商机线索关联转化为售后工单的应用
  • 203、【数组】NLP分词实现(Python)
  • Wireshark插件开发实战:扩展网络协议分析的边界
  • cursor 弹出在签出前,请清理仓库工作树 窗口
  • C++ STL(五) 无序关联容器
  • vue3:三项目增加404页面
  • 记录一次MySQL的分库分表行为
  • Windows逆向工程入门之MASM数据结构使用