摘要: 思路: 收到5块时,只是添加;收到十块时,添加10块,删除一个5块;收到20块时,添加20,删除一个10块一个5块,或者直接删除3个5块(注意:这里先删除5+10优于3个5) 结果无误,但是速度太慢,反复对元素进行添加,查找,删除等操作。 其实根本没必要对bills的元素反复进行查找删除操作,只需要 阅读全文
posted @ 2019-02-20 16:23 Nice_to_see_you 阅读(469) 评论(0) 推荐(0) 编辑
摘要: 思路: 尽量先将小饼干分配给胃口小的孩子,故而饼干和孩子胃口都应该先排序。 python中,a.sort()只能用于a为list, sort()是可变对象的方法,无参数,无返回值,但会影响改变对象。 sorted()不会发生上述情况,sorted()函数需要一个参数(参数可以是列表、字典、元组、字符 阅读全文
posted @ 2019-02-20 11:40 Nice_to_see_you 阅读(353) 评论(0) 推荐(0) 编辑
摘要: 思路: 只要第二天的价格高于第一天,就进行交易。(这样的话就默认可以同一天内先卖出再买进) 复杂度分析: 时间复杂度:O(n),遍历一次。 空间复杂度:O(1),需要额外的常量空间。 不过这种方法虽然简单,但只有遍历,感觉没有用到贪心的精髓,毕竟实际上不可能提前就知道第二天的股票价格。 阅读全文
posted @ 2019-02-19 21:55 Nice_to_see_you 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 1.单纯用list就可以实现,但并未用到队列相关知识。 2.用两个队列(实际上是两个list)实现栈。 思路: queue1用来存放数据,每次入栈就插入queue1索引值为0的地方。queue2为出栈时的辅助队列,将queue1[1:-1]的元素出队然后入队queue2(也就是queue1逆序压入q 阅读全文
posted @ 2019-02-19 11:34 Nice_to_see_you 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 注意:getMin()时间复杂度为O(1) 最原始的方法: 可惜min()函数太慢 思路1: 使用2个栈,栈1记录进来的数,栈2记录目前的最小值。当有新数push进来的时候,如果栈2为空或者这个数小于栈2顶上的值,就把这个数推入栈2。当pop的数正好等于最小值时,说明当前栈内的最小值变化了,要弹出这 阅读全文
posted @ 2019-02-18 20:54 Nice_to_see_you 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 思路: 首先用字典将三对括号存储,遍历字符串中每个字符,遇到左括号就入栈;遇到右括号就开始判断:是否与栈弹出的顶字符相同。 如果到最后栈被清空,说明全部匹配上了,为真。 复杂度分析: 时间复杂度:O(n),因为我们一次只遍历给定的字符串中的一个字符并在栈上进行 O(1)的推入和弹出操作。 空间复杂度 阅读全文
posted @ 2019-02-18 16:55 Nice_to_see_you 阅读(406) 评论(0) 推荐(0) 编辑