《算法设计与分析基础》(Python语言描述) 课件 第2章常用的数据结构及其应用(1).pptx

《算法设计与分析基础》(Python语言描述) 课件 第2章常用的数据结构及其应用(1).pptx

  1. 1、本文档共83页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第2章工之利器—常用的数据结构及其应用;2/83;2.1线性表—数组;2.1.2Python列表;1)访问列表中的值

2)列表脚本操作符

3)列表的函数

4)列表的方法;;;;2.1.3列表元素排序;对于多关键字排序,key可以使用operator模块提供的itemgetter函数获取对象的哪些维的数据实现排序。;可以制定自定义的比较规则;2.1.4列表的拷贝;1 importcopy #导入copy模块

2 a=[1,[1,2,3],4]

3 b=copy.deepcopy(a)

4 print(a) #输出:[1,[1,2,3],4]

5 print(b) #输出:[1,[1,2,3],4]

6 b[0]=3

7 b[1][0]=3

8 print(a) #输出:[1,[1,2,3],4]

9 print(b) #输出:[3,[3,2,3],4];1 a=[1,[1,2,3],4]

2 b=a.copy()

3 print(a) #输出:[1,[1,2,3],4]

4 print(b) #输出:[1,[1,2,3],4]

5 b[0]=3

6 b[1][0]=3

7 print(a) #输出:[1,[3,2,3],4]

8 print(b) #输出:[3,[3,2,3],4];2.1.5实战—移除元素(LeetCode27★);解法1:整体建表法。用nums存放删除所有val元素的结果,先将结果数组nums看成是一个空表,用k表示结果数组的元素个数(初始为0),用i遍历nums,遇到保留元素(不等于val)时重新插入到结果数组nums中,遇到val元素时跳过。最后返回k。;1 class?Solution:

2 def?removeElement(self,nums:List[int],val:int)-int:

3????? n=len(nums)

4???????k,i=0,0??????????? #k记录结果数组中的元素个数

5?????? while?in:

6????????? if?nums[i]!=val:??? #nums[i]是保留的元素

7?????????? nums[k]=nums[i];?? #将nums[i]重新插入到结果数组中

8??????????? k+=1?? #结果数组的长度增1

9???????? i+=1

10????? return?k?????????? #返回保留的元素个数;解法2:移动法。同样用nums存放删除所有val元素的结果,先将结果数组看成是整个表,用k表示要删除的元素个数(初始为0),用i遍历nums:

①遇到保留元素(不等于val)时将nums[i]前移k个位置。

②遇到val元素时将k增1。

遍历完毕返回结果数组的长度n-k。;1 class?Solution:

2???? def?removeElement(self,nums:List[int],val:int)-int:

3???? n=len(nums)

4?????? k,i=0,0? #k记录结果数组中的元素个数

5?????? while?in:

6??????? if?nums[i]!=val:?? #nums[i]是保留的元素

7?????????? nums[i-k]=nums[i]? #将nums[i]前移k个位置

8???????? else:?? #nums[i]是要删除的元素

9???? k+=1??????? #k增1

10?????? i+=1

11???? return?n-k???????? #返回结果数组的长度n-k;解法3:区间划分法。用v[0..k](共k+1个元素)表示保留的元素区间(即不为val区间),初始时保留区间为空,所以置k=-1。

v[k+1..i-1](共i-k-1个元素)表示删除元素区间(即为val的区间),i从0开始遍历v,初始时删除区间也为空。;;1 class?Solution:

2???? def?removeElement(self,nums:List[int],val:int)-int:

3????? n=len(nums)

4???????k,i=-1,0???? #k记录结果数组中的元素个数

5?????? while?in:

6????????? if?nums[i]!=val:?? #nums[i]是保留的元素

7????????? k+=1????????

您可能关注的文档

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档