数组刷题总结

1、子数组问题
注意:子数组是连续的,不同于子序列
子数组中的元素个数为k,滑动平均法
以和为例,先选前k个元素作为一个窗口,计算出当前的和值,如果该值小于目标值,滑动窗口,也就是当前的和加上后面一个元素减去第一个元素得到滑动之后的和值,再次判断,不断滑动。

 def numOfSubarrays(self, arr, k, threshold):
  	count = 0
  	now_avg = sum(arr[0:k])
  	j = 0
  	if now_avg>=k*threshold:
  		count +=1
  	for i in range(k,len(arr)):
  		now_avg = now_avg +arr[i] -arr[j]
  		j += 1
  		if now_avg >=k*threshold:
  			count += 1
  	return count

2、如何取出二维数组的对角线元素?

tran = [list1[i][i] for i in range(len(list))

*****3、如何将一个含有字符串的列表转换为二维数组?

list1=['abc','edf', 'rds']
arr = [list(row) for row in list1]

当然,也可以转换成子问题:如何使一个字符串转换为列表,这样可以同时获取元素和下标?

a ='8733'
arr=list(a)
# output:['8','7','3','3']

这样比直接对字符串本身进行循环遍历好用得多

盲点:
1、时间复杂度为O(logn)的算法: 一般选择二分查找法,要先排序,或者数组中是局部排序的,如查找峰值。
2、如何获取数组中某个元素的下标?
nums.index(要查找的元素)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值