交换座位

交换座位

http://www.nowcoder.com/questionTerminal/24f41669379a4d9fa1fc3237838faa13

题目描述
在一场集体婚礼上,有n对新人需要坐在连续排列的 2n个座位上合影,同一对新人彼此挨着。由于进场时各对新人并未按序入座,请计算最少交换座位的次数,以便使每对新人均可并肩坐在一起。一次交换可选择任意两人,让他们互换座位。
全部新人的序号可用 0 到 2n-1 的整数表示,第一对是 (0, 1),第二对是 (2, 3),以此类推,最后一对是 (2n-2, 2n-1)。
row[i]指最初坐在第 i 个座位上的新人编号,i是从0到(2n-1)的一个升序全排列,row不存在重复值。

输入描述
输入共有2行,第一行为n,即共有多少对新人(2≤n≤100000 ),第二行为row,即2n个座位上的初始新人编号。

输出描述:
输出最少交换座位的次数。
示例1
输入
2
0 2 1 3
输出

1
思路
//1从左到右判断一个数的奇偶,用i记录位置
//2如果为偶数r,则判断下一个是否为r+1;
//3如果为偶数r,则判断下一个是否为r-1;
//4如果是则继续向后判断,返回1
//5如果不是则向后寻找r+1或r-1,记录其位置j,找到后交换i+1和j的位置,count+1
//6当i等于2n-1时,结束

import java.util.Scanner;
public class Add {

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int m =0;
    while(m<10){
    String nstr = in.nextLine();
    int n = Integer.parseInt(nstr);
    int[] nums = new int[2*n];
    String haoStr = in.nextLine();
    String[] haoStrArr = haoStr.split(" ");
    for(int i =0;i<nums.length;i++){
        nums[i] = Integer.parseInt(haoStrArr[i]);
    }

    System.out.println(change(nums));
    m++;
    }

}



public static int change(int[] nums){
    int count =0;
    for(int i=0;i<nums.length-1;i=i+2){
        if(nums[i]%2==0){
            if(nums[i+1]!=nums[i]+1){
                for(int j =i+2;j<nums.length;j++){
                    if(nums[j]==nums[i]+1){
                        int m = nums[j];

                        nums[j]=nums[i+1];
                        nums[i+1]=nums[i]+1;
                        count++;                            
                    }
                }
            }
        }
        if(nums[i]%2==1){
            if(nums[i+1]!=nums[i]-1){
                for(int j =i+2;j<nums.length;j++){
                    if(nums[j]==nums[i]-1){
                        int m = nums[j];

                        nums[j]=nums[i+1];
                        nums[i+1]=nums[i]-1;
                        count++;                            
                    }
                }
            }
        }
    }        
    return count;

}

}
问题
在自己电脑上运行正常,但系统一直显示运行超时,求大神优化代码

全部评论

相关推荐

不愿透露姓名的神秘牛友
02-26 15:46
点赞 评论 收藏
分享
牛客765689665号:没有实习是硬伤,央国企看学历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务