第一题100%,后面做得稀烂,说说我第一题的思路。长度为n的排列,数字在1-n,每个数字只出现一次,所以最后变成非递减排列,排列一定是1234…n。每次选择一个数字+1,一个数字-1,而且还要不破坏排列的性质,那么选择的两个数字必然是只差1,这样一增一减正好是对换。然后,先去把第一个位置变成1,然后再去把第二个位置变成2,以此类推,直到把所有位置都变得满足要求。(搞一个字典,记录各个元素在排列中的位置,方便快速增减)
点赞 2

相关推荐

Lyxiho:浙江大学 加大加粗
点赞 评论 收藏
分享
牛客网
牛客企业服务