Monthly Archives: 一月 2017

python装饰器完整写法

在24中设计模式中有装饰模式,该模式的思想很简单,装饰物和被装饰物继承共同的类,然后装饰物中包含被装饰物的引用,这样就可以一层层进行装饰——可以有很多层装饰。 python中的装饰器跟这一模式类似,可以对方法进行装饰。比如对已有的函数要在其前后加上相应的预处理和后处理功能,可以使用装饰器方便的完成这一过程。 下面首先通过一个例子说明python中装饰器的用法。 假设有一个发送消息的方法sendMs …

Continue reading

[leetcode题解]215.Kth Largest Element in an Array(数组中找第k大数)

leetcode,215,Kth Largest Element in an Array,给定一个包括若干元素的数组以及一个k,要求在数组中找出第k大的数。 通常的思路是排序,然后可以快速找到第k大的数,时间复杂度o(nlogn)。比较好的方法是借助快排的思想,一次轴分,可以以o(n)的时间复杂度找到第k大数。 c++代码: class Solution { public: //author:凌风 …

Continue reading

[pat题解]1074.Reversing Linked List(25)

本题要求对一个链表进行分组逆置,给定K,每K个元素为一组,将组中元素逆置,如果最后一组元素不足K个,则不做处理。 本题个人做法为使用map来组织链表结构,可以方便的进行查询和处理。 c++代码如下:  #include <algorithm> #include <cstdio> #include <iostream> #include <vect …

Continue reading

[leetcode题解]143. Reorder List(链表重排序)

leetcode第143题,recorder list,属于linked-list相关的题目。 题目给定一个单链表,然后要求按给定的顺序重新排列所有元素,要求在原地做,而且不能修改节点中的值,只能修改节点的插入顺序。重排序的规则如下示例: L:a0->a1->a2->a3…..->an 将其修改为L:a0->an->a1->an-1->& …

Continue reading

[leetcode题解]2.Add Two Numbers

leetcode,2,Add Two Numbers,给定两个单链表,将两个单链表从左到右进行相加,题目中已知不会出现前导0。本题可以直接对两单链表同时进行遍历相加即可,保留一个进位,检测最后是否要进行正确进位,python和c++两种语言写,代码如下: python代码 class Solution(object): def addTwoNumbers(self, l1, l2): “”” :t …

Continue reading

[leetcode题解]19.Remove Nth Node From End of List(删除倒数N个元素)

leetcode,19,Remove Nth Node From End of List,给定一个单链表,删除倒数第N个元素,要求进行一遍遍历即可。思路是利用两个指针,一个提前走N步,然后另一个指针指向开头,两个指针同时走,当前面的指针到尾部时,后面的指针正好位于要删除的元素位置。为了得到要删除位置的前一个位置,可以加入一个预头,然后,前面的指针从头开始,后面的指针从预头开始。 c++代码: cl …

Continue reading

[leetcode题解]21.Merge two Sorted Lists(两排序链表合并)

leetcode,21,Merge Two Sorted Lists,单链表合并问题,合并两个已排序链表为一个完整的已排序链表。 直接使用两个指针依次比较其中值大小即可,小的插入,并且指针后移,最后不要忘记把剩下的非空链表加入链尾。 此题的升级版本为leetcode,23,Merge K Sorted Lists.  c++代码: class Solution { public: Lis …

Continue reading

[leetcode题解]23.Merge K Sorted Lists(多链表合并)

leetcode,23题,Merge K Sorted Lists,多排序链表合并为一个有序链表问题。可以直接使用priority_queue或者heap。 多个链表以vector形式组织,vector中可能含有空链表,所以建堆或者初始化优先队列之前先对vector进行过滤,将空链表过滤掉。 注意优先队列的写法,类型,底层容器,以及要用到的比较器,比较器是一个重载了括号操作符的普通类。 c++题解 …

Continue reading