2022年8月16日- 每日两题坚持一年

code题目链接:https://leetcode.cn/problems/design-an-ordered-stream/submissions/

解题:

class OrderedStream(object):

    def __init__(self, n):
        """
        :type n: int
        """
        # 参数预设,预设n列表最快的方式
        self.data = [None] * (n+1)
        self.ptr = 1

    def insert(self, idKey, value):
        """
        :type idKey: int
        :type value: str
        :rtype: List[str]
        """
        # 这里需要继承init的参数,包括 data 和 ptr
        data = self.data

        result = list()
        data[idKey] = value
        while self.ptr < len(data) and data[self.ptr] is not None:
            result.append( data[self.ptr] )
            self.ptr += 1
        print(result)
        return result

acwing题目链接:算法基础课-基础算法-快速排序-快速排序https://www.acwing.com/problem/content/787/

思想:

  • 分治的思想
  • 左边的都是小于flag 值的列表,右边都都是大于flag值的列表
  • flag值可以取中间值即可,可以当做一个惯例
def quickSort( data, left, right ):
    if left < right:
        i = left - 1
        j = right + 1
        # 一般来说,mid值取中间值即可
        mid = data[(i + j) // 2]
        while i < j:
            while 1:
                i = i + 1
                # 这里的mid值其实使用 equal即可
                if data[i] >= mid:
                    break
            while 1:
                j = j-1
                if data[j] <= mid:
                    break
            if i < j:
                data[i], data[j] = data[j], data[i]
        quickSort(data, left, j)
        quickSort(data, j+1, right)


if __name__ == '__main__':
    N = int(input())
    data = list( map(int, input().split() ) )
    # print(data)
    # N= 5
    # data = [3,1,2,4,5]
    quickSort(data, 0, N-1)
    print(' '.join(list(map(str, data))))

知识点:

  • 列表可以直接 a = [ ], 新建一个n的列表 为 [None] * n
  • 方法中需要继承类init的成员变量
  • 控制台输入python可以用 input() 这种方式来获取到
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值