leetcode 《简单》 设计问题 Python实现'''
Shuffle an Array
打乱一个没有重复元素的数组。示例:
// 以数字集合 1, 2 和 3 初始化数组。
int[] nums = {1,2,3};
Solution solution = new Solution(nums);// 打乱数组 [1,2,3] 并返回结果。任何 [1,2,3]的排列返回的概率应该相同。
solution.shuffle();// 重设数组到它的初始状态[1,2,3]。
solution.reset();// 随机返回数组[1,2,3]打乱后的结果。
solution.shuffle();
Email: yefeng DOT zheng AT gmail DOT com
yefeng.zheng@gmail.com
http://legacydirs.umiacs.umd.edu/~zhengyf/
'''
#定义两个函数,shuffle函数能把数组随机打乱,reset函数能返回初始数组。
#方法1:通过
#思路:调用洗牌函数shuffle
class Solution(object):def __init__(self, nums):""":type nums: List[int]"""self.origin = numsdef reset(self):"""Resets the array to its original configuration and return it.:rtype: List[int]"""return self.origin def shuffle(self):"""Returns a random shuffling of the array.:rtype: List[int]import random random_num = random.randint(len(nums))for i in range(len(nums)):self.output = nums[]"""import random new_nums = self.origin[:]random.shuffle(new_nums)return new_nums# Your Solution object will be instantiated and called as such:
# obj = Solution(nums)
# param_1 = obj.reset()
# param_2 = obj.shuffle()
#方法2:通过
#思路:产生0-n之间的随机数,然后对调i,j的值
class Solution(object):def __init__(self, nums):""":type nums: List[int]"""self.origin = nums[:]self.output = nums def reset(self):"""Resets the array to its original configuration and return it.:rtype: List[int]"""return self.origin def shuffle(self):"""Returns a random shuffling of the array.:rtype: List[int]"""import random len_nums = len(self.output)for i in range(len_nums):random_num = random.randint(i, len_nums-1) #保证不会取比i小的数字,从而self.output不会重复self.output[i], self.output[random_num] = self.output[random_num], self.output[i]return self.output'''
最小栈
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。
•push(x) -- 将元素 x 推入栈中。
•pop() -- 删除栈顶的元素。
•top() -- 获取栈顶元素。
•getMin() -- 检索栈中的最小元素。示例:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin();   --> 返回 -3.
minStack.pop();
minStack.top();      --> 返回 0.
minStack.getMin();   --> 返回 -2.
'''#方法1:
#思路:开辟两个栈,一个栈是普通的栈,一个栈用来维护最小值的队列。
class MinStack(object):def __init__(self):"""initialize your data structure here."""self.stack = []self.minstack = [] #放置碰到的所有最小的push值def push(self, x):""":type x: int:rtype: void"""self.stack.append(x)if len(self.minstack) == 0 or self.minstack[-1] >= x: #如果最小栈列表为空或者最后一个数字大于等于新输入的值x,就把x加入最小栈序列self.minstack.append(x)def pop(self):""":rtype: void"""if len(self.stack) == 0:return pop_stack = self.stack.pop()if pop_stack == self.minstack[-1]:self.minstack.pop()def top(self):""":rtype: int"""return self.stack[-1]def getMin(self):""":rtype: int"""return self.minstack[-1]# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(x)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(x)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()
方法2
class MinStack:# @param x, an integerdef __init__(self):self.stack1 = []self.stack2 = []# @return an integerdef push(self, x):self.stack1.append(x)if len(self.stack2) == 0 or x <= self.stack2[-1]:self.stack2.append(x)# @return nothingdef pop(self):top = self.stack1[-1]self.stack1.pop()if top == self.stack2[-1]:self.stack2.pop()# @return an integerdef top(self):return self.stack1[-1]# @return an integerdef getMin(self):return self.stack2[-1]方法3
class MinStack(object):def __init__(self):"""initialize your data structure here."""self.stack = []self.min = Nonedef push(self, x):""":type x: int:rtype: void"""self.stack.append(x)if self.min == None or self.min > x:self.min = xdef pop(self):""":rtype: void"""popItem = self.stack.pop()if len(self.stack) == 0:self.min = Nonereturn popItemif popItem == self.min:self.min = self.stack[0]for i in self.stack:if i < self.min:self.min = ireturn popItemdef top(self):""":rtype: int"""return self.stack[-1]def getMin(self):""":rtype: int"""return self.min方法4
class MinStack(object):def __init__(self):"""initialize your data structure here."""self.l = []def push(self, x):""":type x: int:rtype: void"""if x is None:passelse:self.l.append(x)def pop(self):""":rtype: void"""if self.l is None:return 'error'else:self.l.pop(-1)def top(self):""":rtype: int"""if self.l is None:return 'error'else:return self.l[-1]def getMin(self):""":rtype: int"""if self.l is None:return 'error'else:return min(self.l)方法5
class MinStack:def __init__(self):self.stack = []self.minStack = []# @param x, an integer# @return an integerdef push(self, x):self.stack.append(x)if len(self.minStack) == 0 or self.minStack[-1] >= x:#print 'minn change'self.minStack.append(x)# @return nothingdef pop(self):p = self.stack.pop()#print 'pop ' , pif p == self.minStack[-1]:#print 'minn pop'self.minStack.pop()# @return an integerdef top(self):return self.stack[-1]# @return an integerdef getMin(self):return self.minStack[-1]

leetcode 《简单》 设计问题 Python实现相关推荐

  1. LeetCode 字符串简单部分 算法 python实现

    ''' #2018-06-02 June Saturday the 22 week, the 153 day SZ LeetCode 字符串简单部分 算法 python实现 https://leetc ...

  2. python网站设计理念_简单介绍下python Django框架的历史,设计理念及优势_Django讲解2...

    简单介绍下python Django框架的历史,设计理念及优势 Django是一个高层次的 Python Web 框架,它是一个鼓励快速开发和干净,实用的框架设计.Django可以更容易地快速构建更好 ...

  3. python创意小作品-全国青少年创意编程与智能设计大赛Python创意编程比赛

    全国青少年创意编程与智能设计大赛Python创意编程比赛 一.作品类型: 1.数字艺术 通过程序生成和展示视觉艺术,具备创意.美感和互动性. 2.互动游戏 各种竞技类.探险类.角色扮演类.球类. 棋牌 ...

  4. 21秋计算机网络小学期——UDP服务器的设计(Python)

    21秋计算机网络小学期--UDP服务器的设计(Python) 本程序是我都小学期作业,内部肯定存在很多不是最合适的代码跟算法,望大佬指正. 最终成品链接 本文已经迁移到个人博客,博客链接:http:/ ...

  5. python实现简单的神经网络,python的神经网络编程

    最受欢迎的 15 大 Python 库有哪些 1.Pandas:是一个Python包,旨在通过"标记"和"关系"数据进行工作,简单直观.它设计用于快速简单的数据 ...

  6. 对南京地铁计价模型分析及最佳路径设计基于Python语言

    离散数学技术报告(该报告不完整) 实验题目:对南京地铁计价模型分析及最佳路径设计基于Python语言 关键词: 城市交通; 地理信息系统; Dijkstra算法; 约束条件; 路径分析 一.引言 截至 ...

  7. 硬件趣学python编程_没有人比我更懂编程,慧编程'吮指编辑器',简单快乐学python...

    咳咳! 大家好,我是偶尔写文章的康康老师. 今天跟大家介绍的是慧编程家的,睡在Scratch上铺的兄弟--慧编程Python编辑器. 这是一款集才华和颜值为一体的'吮指'编辑器! 忘记肯德基,你的手指 ...

  8. python简单编程-编程中最简单的语言Python,这样学或许更容易

    最近微信小程序上面出了一个跳一跳的小游戏 大家有没有玩呀? 编程中最简单的语言Python,这样学或许更容易 分享之前我还是要推荐下我自己建的Python开发学习群:628979297,群里都是学Py ...

  9. python与excel表格-超简单:用Python让Excel飞起来

    超简单:用Python让Excel飞起来 作者:王秀文;郭明鑫;王宇韬 编著 出版日期:2020年07月 文件大小:20.30M 支持设备: ¥45.00在线试读 适用客户端: 言商书局 iPad/i ...

最新文章

  1. 超美观的 Vue+Element 开源后台管理 UI
  2. Java静态内部类、匿名内部类、成员式内部类和局部内部类
  3. 掌握Java 11的Constantdynamic
  4. 《Dubbo迈出云原生重要一步-应用级服务发现解析》
  5. 003 - JQuery APP viewport rem
  6. 文件和目录:access函数
  7. HTTP权威指南-概述
  8. 武大计算机专业学费多少,2017年武汉大学硕士研究生学费及奖助学金
  9. # 20175333曹雅坤 第八周课程学习总结
  10. 银联支付接口申请流程
  11. 14.STC15W408AS单片机IIC驱动OLED
  12. 停机坪上的飞机有可能被偷走吗?
  13. 揭秘大厂的物联网关键技术
  14. python爬取去哪网数据_用户观点:企查查数据爬取技术与Python 爬取企查查数据...
  15. 机房动环监控系统方案组成及应用
  16. 简单计算器(Java实训)
  17. 一文读懂自动驾驶中常用的定位算法之NDT点云配准算法
  18. PHP 运行方式详解
  19. steam上的异形扫雷游戏tametsi技巧
  20. 工作分析文献综述_毕业论文文献综述不会写?快来看看这篇文章(附含通用模板)...

热门文章

  1. 面试题17.04.消失的数字
  2. 源码分析Dubbo服务消费端启动流程
  3. UTF-8 和 Unicode 的区别
  4. Python3系列__01Python安装
  5. 什么是 Python 自省?
  6. 2017/4/12 afternoon
  7. Myeclipse中点(.)不出来方法或者属性?
  8. 埃及分数(codevs 1288)
  9. [程序设计]C++中extern “C”含义深层探索(转载)
  10. Postgresql修改字段的长度