zoukankan      html  css  js  c++  java
  • leetcode 932. 漂亮数组

     1 """
     2 思路:
     3 1、如何满足漂亮数组?
     4 奇数 + 偶数 = 奇数 =》将数组,拆分为两部分:奇数漂亮数组 + 偶数漂亮数组
     5 
     6 2、如何获取 奇数漂亮数组 和 偶数漂亮数组?
     7 举例:求N=7的漂亮数组
     8 获取奇数数组:1 3 5 7  偶数数组:2 4 6
     9 
    10 由于:
    11     如果一个数组是漂亮数组,则对该数组所有元素进行 【乘以同一个值】或者【加/减 同一个值】,则获得的数组仍为漂亮数组
    12 故:
    13     求 1 3 5 7 的漂亮数组 《=》 求 1 2 3 4 的漂亮数组,在对数组元素进行 2x-1,即可
    14     求 2 4 6 的漂亮数组 《=》 求 1 2 3 的漂亮数组,再对数组元素进行 2x,即可
    15 
    16 综上,求 “N=7的漂亮数组”,转换为了 “求N=4的漂亮数组” 和 “求N=3的漂亮数组”。
    17 
    18 分治 递归 可解该题。
    19 """
    20 
    21 class Solution:
    22     def __init__(self):
    23         self.n_to_ans = None
    24 
    25     def beautifulArray(self, N: int) -> List[int]:
    26         self.n_to_ans = {1: [1]}
    27         self.solve(N)
    28         return self.n_to_ans[N]
    29 
    30     def solve(self, n):
    31         if n not in self.n_to_ans:
    32             odd_ls = self.solve((n+1)//2)
    33             even_ls = self.solve(n//2)
    34             self.n_to_ans[n] = [(2*i-1) for i in odd_ls] + [(2*i) for i in even_ls]
    35         return self.n_to_ans[n]
  • 相关阅读:
    js入门 关于js属性及其数据类型(详解)
    js入门关于js‘i++’‘++i’和‘i--’‘--i’计算的问题
    js入门关于函数
    js入门
    Canvas
    SVG
    H5表单属性
    移动式布局之弹性布局day1
    Mysql
    PHP抽象类和接口
  • 原文地址:https://www.cnblogs.com/shijianming/p/12940677.html
Copyright © 2011-2022 走看看