from sys import maxsizedef array_equalization(vector: list[int], step_size: int) -> int:"""This algorithm equalizes all elements of the input vectorto a common value, by making the minimal number of"updates" under the constraint of a step size (step_size).>>> array_equalization([1, 1, 6, 2, 4, 6, 5, 1, 7, 2, 2, 1, 7, 2, 2], 4)4>>> array_equalization([22, 81, 88, 71, 22, 81, 632, 81, 81, 22, 92], 2)5>>> array_equalization([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 5)0>>> array_equalization([22, 22, 22, 33, 33, 33], 2)2>>> array_equalization([1, 2, 3], 0)Traceback (most recent call last):ValueError: Step size must be positive and non-zero.>>> array_equalization([1, 2, 3], -1)Traceback (most recent call last):ValueError: Step size must be positive and non-zero.>>> array_equalization([1, 2, 3], 0.5)Traceback (most recent call last):ValueError: Step size must be an integer.>>> array_equalization([1, 2, 3], maxsize)1"""if step_size <= 0:raise ValueError("Step size must be positive and non-zero.")if not isinstance(step_size, int):raise ValueError("Step size must be an integer.")unique_elements = set(vector)min_updates = maxsizefor element in unique_elements:elem_index = 0updates = 0while elem_index < len(vector):if vector[elem_index] != element:updates += 1elem_index += step_sizeelse:elem_index += 1min_updates = min(min_updates, updates)return min_updatesif __name__ == "__main__":from doctest import testmodtestmod()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。