招行交换座位问题

感觉我这样写也是可以的啊!
遍历所给数组,步长设置为2。
如果arr[i-1] 为偶数,则交换
index1 = arr.index(arr[i - 1] + 1)
arr[i], arr[index1] = arr[index1], arr[i]
为奇数,则交换:
index1 = arr.index(arr[i - 1] - 1)
arr[i], arr[index1] = arr[index1], arr[i]

在本地是怎么测试怎么过,提交上去就是不能完全通过所有案例
求大佬帮我瞅瞅

import sys


class Solution:

    def fun1(self):
        # while True:
        n = int(input().strip())
        arr = sys.stdin.readline().strip()
        arr = list(map(int, arr.split()))
        Min = min(arr)
        Max = max(arr)
        if Min != 0&nbs***bsp;Max != 2 * n - 1:
            return 0
        if n < 2&nbs***bsp;len(arr) != 2 * n:
            return 0
        res = 0
        for i in range(1, 2 * n, 2):
            diff = arr[i] - arr[i - 1]
            if abs(diff) == 1:
                continue
            # if diff < 0:
            if arr[i - 1] & 1 == 1:
                index1 = arr.index(arr[i - 1] - 1)
                arr[i], arr[index1] = arr[index1], arr[i]
                res += 1
            else:
                index1 = arr.index(arr[i - 1] + 1)
                arr[i], arr[index1] = arr[index1], arr[i]
                res += 1
        print(res)


if __name__ == '__main__':
    res = Solution().fun1()
    # print(res)


全部评论
偶数,就让前一个数比它大1,奇数就让前一个数比它小1,交换后更新map,每次走两格,i=1开始走,如果你也是这样想的,那就是代码哪里没写对
点赞
送花
回复
分享
发布于 2020-04-29 13:08

相关推荐

头像
05-13 11:19
C++
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务