题解 | #有重复项数字的全排列#

有重复项数字的全排列

http://www.nowcoder.com/practice/a43a2b986ef34843ac4fdd9159b69863

#
# 
# @param num int整型一维数组 
# @return int整型二维数组
#

class Solution:
    def permuteUnique(self , num ):
        # write code here
        res = []
        num = sorted(num)
        if not num:
            return res
        while True:
            res.append(num[:])
            if not self.has_next_number(num):
                return res
        return res
    
    
    def has_next_number(self,num):
#         123541
        i = len(num)-1
        while i>0 and num[i]<=num[i-1]:
            i -= 1
        if i==0:
            return False
        j=i
        while j<len(num)-1 and num[j+1]>num[i-1]:
            j+=1
        num[i-1],num[j] = num[j],num[i-1]
        j = len(num)-1
        while i<j:
            num[i],num[j] = num[j],num[i]
            i+=1
            j-=1
        return True
    
        
        
        
        
        
全部评论

相关推荐

Java大菜狗:纯纯招黑奴,一天还不到两百那么多要求,还不迟到早退,以为啥啊,给一点工资做一堆活,还以不拖欠员工工资为荣,这是什么值得骄傲的事情吗,纯纯***公司
点赞 评论 收藏
分享
零OFFER战士:另一个版本查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务