一个神奇的实现:计算数组尾部对称长度

简介: 灵光一闪,得到这一句:all(map(lambda x:x==-1, series[-i:-mid] * series[-mid:])) # 对折,相乘,全是-1爽到死!完整代码如下:import numpy as npimport matplotlib.

灵光一闪,得到这一句:

all(map(lambda x:x==-1, series[-i:-mid] * series[-mid:])) # 对折,相乘,全是-1

爽到死!

完整代码如下:

import numpy as np
import matplotlib.pyplot as plt


# 函数:返回数组尾部对称长度
def symmetry(series):
    for i in range(50, 0, -2):
        mid = i // 2
        is_symmetry = all(map(lambda x:x==-1, series[-i:-mid][::-1] * series[-mid:])) # 对折,相乘,全是-1
        if is_symmetry:
            return i
    return 0


# 计算对称长度
series = np.random.choice([-1, 1], 100)
print(symmetry(series))


# 作图验证
fig, axes = plt.subplots(1, 1, sharex=True)
axes.plot(np.cumsum(series), 'rd-')
plt.show()

效果图

目录
相关文章
|
6月前
|
存储 算法 容器
排列对称串
排列对称串
32 1
|
6月前
|
存储 算法 Java
数据结构和算法面试题:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
数据结构和算法面试题:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
85 0
|
6月前
|
算法
顺序表应用4-2:元素位置互换之逆置算法(数据改进)
顺序表应用4-2:元素位置互换之逆置算法(数据改进)
|
算法
【算法专题突破】双指针 - 最大连续1的个数 III(11)
【算法专题突破】双指针 - 最大连续1的个数 III(11)
34 0
判断一个数是否是对称数(数组/非数组解法)
判断一个数是否是对称数(数组/非数组解法)
|
存储 编解码 缓存
|
算法
算法练习——(1)找数组中唯一成对的那个数(异或)
——如何找数组中唯一成对的那个数(数组特殊) 1-1000这一千个数放在含有1001个元素的数组中,只有唯一的一个元素值重复,其他均只出现一次。 每个数组元素只能访问一次,设计一个算法,将他找出来;不用辅助储存空间,设计一个算法实现.
112 0
数组——209.长度最小的子数组
本专栏按照数组—链表—哈希—字符串—栈与队列—二叉树—回溯—贪心—动态规划—单调栈的顺序刷题,采用代码随想录所给的刷题顺序,一个正确的刷题顺序对算法学习是非常重要的,希望对大家有帮助
|
算法
算法基础~链表~从位置m到n逆序
算法基础~链表~从位置m到n逆序
101 0
算法基础~链表~从位置m到n逆序
|
算法 前端开发
【前端算法】最大连续1的个数,一次遍历
给定一个二进制数组, 计算其中最大连续1的个数。
121 0
【前端算法】最大连续1的个数,一次遍历