zoukankan      html  css  js  c++  java
  • LeetCode-765.情侣牵手

      N 对情侣坐在连续排列的 2N 个座位上,想要牵到对方的手。 计算最少交换座位的次数,以便每对情侣可以并肩坐在一起。 次交换可选择任意两人,让他们站起来交换座位。

    人和座位用 0 到 2N-1 的整数表示,情侣们按顺序编号,第一对是 (0, 1),第二对是 (2, 3),以此类推,最后一对是 (2N-2, 2N-1)

    这些情侣的初始座位  row[i] 是由最初始坐在第 i 个座位上的人决定的。

    示例 1:

    输入: row = [0, 2, 1, 3]
    输出: 1
    解释: 我们只需要交换row[1]和row[2]的位置即可。
    

    示例 2:

    输入: row = [3, 2, 0, 1]
    输出: 0
    解释: 无需交换座位,所有的情侣都已经可以手牵手了。


     1 class Solution {
     2     public int minSwapsCouples(int[] row) {
     3         int n=0;
     4         //只需要遍历下标为偶数的座位,每次+2,奇数的座位可由交换座位匹配好
     5         for(int i=0;i<=row.length-2;i+=2){
     6             int j;
     7             //判断下标i的情侣是多少
     8             j=row[i]%2==0?row[i]+1:row[i]-1;
     9             //若下一个座位的不是该情侣
    10             if(row[i+1]!=j){
    11                 //需要进行交换座位
    12                 n++;
    13                 //找到该情侣,进行交换
    14                 for(int m=i+2;m<row.length;m++){
    15                     if(row[m]==j){
    16                         swap(row,m,i+1);
    17                         break;
    18                     }
    19                 }
    20             }
    21         }
    22         return n;
    23     }
    24     
    25     //交换
    26     private void swap(int[] a,int i,int j){
    27         int tmp=a[i];
    28         a[i]=a[j];
    29         a[j]=tmp;
    30     }
    31 }
  • 相关阅读:
    [ES6] Objects create-shorthand && Destructuring
    [ES6] Spread Operator
    [ES6] Rest Parameter
    [ES6] Function Params
    [React] Extracting Private React Components
    [Javascript] Array methods in depth
    生物-大脑极限:大脑极限
    生物-永生计划:永生计划
    物理-纳米技术-纳米技术应用:纳米技术应用
    物理-纳米技术:纳米技术
  • 原文地址:https://www.cnblogs.com/lyh28/p/10630649.html
Copyright © 2011-2022 走看看