python算法-最大连续1的个数删除有序数组中的重复项--Day020
灵活应用列表和字段
文章目录
- 前言
- LeetCode 题⽬太多,全部刷完肯定不是最好最有效的⽅式,其中涉及到的基本知识点来来回回就那些,同时有⾮常多的类似题,所以刷经典题,掌握这些经典题是最有效的学习⽅式。 本人精选200-500算法题,让大家更好掌握。
- 例1.最⼤连续 1 的个数
- 例2.删除有序数组中的重复项
前言
LeetCode 题⽬太多,全部刷完肯定不是最好最有效的⽅式,其中涉及到的基本知识点来来回回就那些,同时有⾮常多的类似题,所以刷经典题,掌握这些经典题是最有效的学习⽅式。
本人精选200-500算法题,让大家更好掌握。
例1.最⼤连续 1 的个数
给定⼀个⼆进制数组 nums , 计算其中最⼤连续 1 的个数。
示例:
1.nums = [1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最⼤连续 1 的个数是 3.
2.nums = [1,0,1,1,0,1] 输出:2
代码如下(示例):
class sol():def ss(self,list):last = 0# last可以取任何0或-1j = 0for i,v in enumerate(list):# 从左到右访问数组 numsif v == 0:# 1、当前元素为 0 ,更新 last的值last = ielse:j = max(j,i-last)# 通过 last 可以获取当前元素距离最前⾯的 1 的个数# 对⽐之前的 j ,更新获取最⼤值return j
s = sol()
li = [1,0,1,1,0,1,1,1,1,1,1,0]
a = s.ss(li)
print(a)
得到的结果:6
例2.删除有序数组中的重复项
给你⼀个 升序排列 的数组 nums ,请你原地 删除重复出现的元素,使每个元素 只出现⼀次 ,返回删除后数组的新⻓度。元素的 相对顺序 应该保持 ⼀致 。
示例:
1.nums = [1,1,2] 输出:2,
2.nums = [1,2] 解释:函数应该返回新的⻓度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新⻓度后⾯的元素。
代码如下(示例):
class sol:def rem(self,list):n = len(list)#长度j = 0#设置0for i in range(n):#遍历if i == 0 or list[i] != list[i-1]:#设置条件,进行筛选list[j] = list[i]j += 1return j
ss = sol()
list = [1,1,1,2,2,2,3,3,4,4,5,5]
a = ss.rem(list)
print(a)
得到的结果:5