所用语言选用python。补充下Class类的相关概念。
class Circle(object) :# 类名首字母大写
pi = 3.14 #类属性,是类创建所有的实例所共有的属性
def _int_(self,r): #默认用_int_创建实例的属性,self代表要创建的实例;初始化一个属性值r;叫构造函数,类实例化自动执行
self.r = r # 等号左边的r是实例的属性名,等号右边约定俗成与属性名一致
def get_area(self):
return self.r**2 * self.pi
circle1 = Circle(1) #创建实例,实例名为circle1,实例属性值为1
print(circle.get_area()) #调用get_area方法别忘记带括号
#类的继承
class Animal:
def eat(self):
print("%s 吃" %self.name)
def drink(self):
print("%s 喝" %self.name)
class Cat(Animal):
def _int_(self):
self.name = name
def cry(self):
print("%s 喵喵" %self.name)
cat = Cat("狸花猫")
cat.eat()
cat.cry()
#输出结果:
狸花猫 吃
狸花猫 喵喵
更全面介绍详细查看:(作为以后复习用)
解决class类问题,就是刷力扣,编写函数问题。第一遍先写出来,第二遍再优化,使得时间和空间复杂度最优。
第一道题两数加和问题。
第二道题数组串联。
第三道题宝石与石头。
第四道题一维数组的动态和。
第五道题转换成小写字母。
第六道题最富有客户的资产质量。
第七道题寻找数组的中心下标。
通过这道题感受到刷力扣算法题的意义,有时候虽然代码写对了,但在运行中的时间和空间复杂度都很高,代价是很高的。所以要看重这两个指标。
第九题轮转数组。
报错,自己在jupter里就正确。
旋转图像类型的问题,我还没有思路,较难,属于中等问题。稍晚补充。
把数组排成最小的数的问题。
总体思路是选择选插入排序方法框架,其中比较大小改成两者之和的大小。虽然通过,但是时间复杂度较高。
移动零问题。
双指针方式真的很巧妙,赞!学到了!
排序数组问题用现在学的冒泡排序、选择排序和插入排序均超时。能通过的用到的是后面学到的排序方式。留到最后练习,每种排序方式都写一次。