lintCode真题实战-入门题集/矩阵面积/整数排序

1. 矩阵面积

实现一个矩阵类Rectangle,包含如下的一些成员变量与函数:

两个共有的成员变量 width 和 height 分别代表宽度和高度。
一个构造函数,接受2个参数 width 和 height 来设定矩阵的宽度和高度。
一个成员函数 getArea,返回这个矩阵的面积。
样例

Python:
    rec = Rectangle(3, 4)
    rec.getArea()

解答:

class Rectangle:    # 简单,主要考察对类方法属性的理解
    def __init__(self, width, height):      # 实例绑定属性的方法是通过实例变量,或者通过self变量
        if width >= 0:
            self.width = width
        
        if height >= 0:    
            self.height = height
        
    def getArea(self):
        return self.width * self.height     # init后的属性,自身可调用


2. 整数排序

给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。

class Solution:

    def sortIntegers(self, A):
        # write your code here
        print('hello')
        return A.sort()    # 这里我尝试使用return sorted(A) 报错

衍生:
list.sort()

>>> L = [5,2,3,1,4]
>>> L
[5, 2, 3, 1, 4]
>>> L.sort()
>>> L       # 这里注意️了! sort()是对L的修改,L变化了
[1, 2, 3, 4, 5]

地址未变

In [73]: mm = [1,3,2]

In [74]: id(mm)
Out[74]: 4466905928

In [75]: mm.sort()

In [76]: mm
Out[76]: [1, 2, 3]

In [77]: id(mm)
Out[77]: 4466905928

sorted()

Python的一个内置函数,使用方法与list.sort()大体一致,不同在于两个地方:

sorted(L)返回一个排序后的L,不改变原始的L;L.sort()是对原始的L进行操作,调用后原始的L会改变,没有返回值。【所以a = a.sort()是错的啦!a = sorted(a)才对!

sorted()适用于任何可迭代容器,list.sort()仅支持list(本身就是list的一个方法)

基于以上两点,sorted使用频率比list.sort()更高些,所以Python中更高级的排序技巧便通过sorted()来演示。

>>> Num
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a = sorted(Num, reverse=True)
>>> a
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> Num
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


你可能感兴趣的:(lintCode真题实战-入门题集/矩阵面积/整数排序)