zoukankan      html  css  js  c++  java
  • 情侣牵手

    题目:N 对情侣坐在连续排列的 2N 个座位上,想要牵到对方的手。 计算最少交换座位的次数,以便每对情侣可以并肩坐在一起。一次交换可选择任意两人,让他们站起来交换座位。
    人和座位用 0 到 2N-1 的整数表示,情侣们按顺序编号,第一对是 (0, 1),第二对是 (2, 3),以此类推,最后一对是 (2N-2, 2N-1)。
    这些情侣的初始座位  row[i] 是由最初始坐在第 i 个座位上的人决定的。来源:https://leetcode-cn.com/problems/couples-holding-hands/

    方法一:自己的代码

    思路:只关注数组中的第一个和第二个数,如果满足条件a.差的绝对值为1,即两数相邻.b.两数中较小的为偶数.则删去

    否则算出第一个数的对象,把对象和第二个数调换位置,再删除第一个和第二个数.

    class Solution:
        def minSwapsCouples(self, row) -> int:
            number = 0
            while len(row) > 2:
                if (abs(row[0]-row[1]) == 1) & (min(row[0:2])%2 ==0):
                    row.remove(row[0])
                    row.remove(row[0])
                else:
                    if row[0] % 2 == 0:
                        r = row[0]+1
                        row[row.index(r)] = row[1]
                        row.remove(row[0])
                        row.remove(row[0])
                    else:
                        r = row[0]-1
                        row[row.index(r)] = row[1]
                        row.remove(row[0])
                        row.remove(row[0])
                    number += 1
            return number
    if __name__ == '__main__':
        duixiang = Solution()
        ww = duixiang.minSwapsCouples([5,4,2,6,3,1,0,7])
        print('结果是:', ww)
    View Code

     

  • 相关阅读:
    爬虫例子及知识点(scrapy知识点)
    Xpath()语法
    yield和python(如何生成斐波那契數列)
    Python3导入cookielib失败
    使用Scrapy爬虫框架简单爬取图片并保存本地(妹子图)
    python使用cookielib库示例分享
    xpath中/和//的差别
    [洛谷P3320] SDOI2015 寻宝游戏
    [洛谷P3322] SDOI2015 排序
    [51nod 1830] 路径交
  • 原文地址:https://www.cnblogs.com/xxswkl/p/11754058.html
Copyright © 2011-2022 走看看