zoukankan      html  css  js  c++  java
  • [leetcode]1054. Distant Barcodes

    出差没有状态,啃不动前面几道硬骨头,倒着做。

    Ver.1:

    时间复杂度很美,但是无法处理 1 2 2 2 5, 1 1 1 2 3这类输入:

    #1 2 2 2 5
    #2 1 2 5 2

    #2 1 1 1 3
    #1 1 1 2 3
    #1 2 1 3 1

    class Solution:
        def rearrangeBarcodes(self, barcodes: List[int]) -> List[int]:
            lengthS =len(barcodes)
            #0,1
            if lengthS == 0 or lengthS == 1:
                return barcodes
            #regular
            barcodes = sorted(barcodes)
            ret =[]
            ret.append(barcodes[lengthS // 2])
            index = 0
            while(len(ret) < lengthS):
                #
                if len(ret) < lengthS:
                    if ret[-1] != barcodes[index]:
                        ret.append(barcodes[index])
                else:
                    return ret
                #
                if len(ret) < lengthS:
                    if ret[-1] != barcodes[- (index+1)]:
                        ret.append(barcodes[- (index+1)])
                else:
                    return ret
                #check
                if len(ret)%2 == 1:
                    index = index + 1
            return ret

    Ver.2:

     其实只要去掉末尾的判断,然后不断缩短list就行了:

    Runtime: 2480 ms, faster than 100.00% of Python3 online submissions forDistant Barcodes.
    Memory Usage: 14.4 MB, less than 100.00% of Python3 online submissions for Distant Barcodes.
     

    Submission Detail

    57 / 57 test cases passed.
    Status: 

    Accepted

    Runtime: 2480 ms
    Memory Usage: 14.4 MB
    Submitted: 1 minute ago

    Accepted Solutions Runtime Distribution

    Sorry. We do not have enough accepted submissions to show distribution chart.

    Accepted Solutions Memory Distribution

    Sorry. We do not have enough accepted submissions to show distribution chart.
    class Solution:
        def rearrangeBarcodes(self, barcodes: List[int]) -> List[int]:
            lengthS =len(barcodes)
            #0,1
            if lengthS == 0 or lengthS == 1:
                return barcodes
            #regular
            barcodes = sorted(barcodes)
            ret = []
            index = 0
            curr_lengthS = lengthS
            #init
            ret.append(barcodes[lengthS // 2])
            barcodes.remove(barcodes[lengthS // 2])
            curr_lengthS = curr_lengthS -1
            while(len(ret)<lengthS):
                #head
                if len(ret) < lengthS:
                    if ret[-1] != barcodes[index]:
                        ret.append(barcodes[index])
                        barcodes.remove(barcodes[index])
                        curr_lengthS = curr_lengthS - 1
                else:
                    return ret
                #midd
                if len(ret) < lengthS:
                    if ret[-1] != barcodes[curr_lengthS // 2]:
                        ret.append(barcodes[curr_lengthS // 2])
                        barcodes.remove(barcodes[curr_lengthS // 2])
                        curr_lengthS = curr_lengthS - 1
                else:
                    return ret
            return ret
  • 相关阅读:
    Linux下Tomcat日志分割
    adb logcat 命令使用说明
    linux系统下安装两个或多个tomcat
    架构师小跟班:SSL证书免费申请及部署,解决页面样式错乱问题完整攻略
    springboot获取七牛云空间文件列表及下载功能
    Java使用ganymed工具包执行LINUX命令教程
    Java学生信息管理系统源码
    数据库SQL语句性能优化
    Java开发环境系列:一篇能解决你99%问题的排雷日记
    架构师小跟班:教你从零开始申请和配置七牛云免费OSS对象存储(不能再详细了)
  • 原文地址:https://www.cnblogs.com/alfredsun/p/10928294.html
Copyright © 2011-2022 走看看