zoukankan      html  css  js  c++  java
  • 1131. 排列中的函数

    1131. 排列中的函数

    中文English

    从1~nn 的全排列共有 n!n! 种。例如 n = 3n=3,共有 3!=63!=6 种排列如下:

    1,2,3
    1,3,2
    2,1,3
    2,3,1
    3,1,2
    3,2,1
    

    对于 nn 的任意一种排列 AA,A_xAx​​ 表示在第 xx 个位置上的数,1 leq x leq n1xn。定义一个函数F(x)F(x)如下:
    F(x)= egin{cases} A_1& ext{x = 1}\ |F(x-1)-A_x|& ext{x = 2,3......n} end{cases}F(x)={A1​​F(x1)Ax​​​​x = 1x = 2,3......n​​

    其中 |x|x∣ 代表 xx 的绝对值。

    现在给出 nn,请你求出:对于 nn 的全排列中,F(n)F(n) 的最小值和最大值分别是多少?结果的格式为[F(n)min, F(n)max][F(n)min,F(n)max]。

    样例

    输入样例: n=3

    输出样例:[0, 2]

    样例解释:
    对于排列[1,2,3]:
    F(1)=A_1=1F(1)=A1​​=1
    F(2)=|F(1)-A_2|=|1-2|=1F(2)=F(1)A2​​=12=1
    F(3)=|F(2)-A_3|=|1-3|=2F(3)=F(2)A3​​=13=2
    所以该排列F(n)=2;
    同理,[1,3,2]的F(n)=0;[2,1,3]的F(n)=2;[2,3,1]的F(n)=0;[3,1,2]的F(n)=0;[3,2,1]的F(n)=0;
    因此,F(n)最小值为0,F(n)最大值为2,返回[0, 2]

    注意事项

    1 leq n leq 10^51n105​​

    输入测试数据 (每行一个参数)如何理解测试数据?
     
    1 [1,1]
    2 [1,1]
    3 [0,2]
    4 [0,4]
    5 [1,5]
    6 [1,5]
    7 [0,6]
    最小的话,逆序 倒减
    最大的话,n - min(上一个)

     第一个版本:代码超过时间限制

    class Solution:
        """
        1.先写出一个列表下面的函数方法,然后全排列,放入res里面,最终返回[min(res),max(res)]
        """
        def minMax(self, n):
            # write your code here.
            res = [1,1]
            for j in range(2,n+1):
                d = [i for i in range(1,1+j)]
                res[0] = self.get_l(d[::-1])
                res[1] = j-res[0]
            
            return res
        
    
        def get_l(self,l):
            r_l = [0]*len(l)
            r_l[0] = l[0]
            for i in range(1,len(l)):
                r_l[i] = abs(l[i]-r_l[i-1])
            return r_l[-1]

    lintcode版本:找规律

    class Solution:
        """
        @param n: An integer.
        @return: Return [minF(n), maxF(n)].
        """
        """
        1.找规律,最小值[1,1,0,0],最大值就是当前n - 上一个最小值就是了
        """
        def minMax(self, n):
            # write your code here.
            
            min_l = [1,1,0,0]
            return [min_l[n%4-1],n-min_l[n%4-2]]
  • 相关阅读:
    移动端网页 -- 安卓与IOS兼容
    item上下自动循环滚动显示
    刮刮奖 --- 可以自定义在图层下添加文字等等信息
    内核终端判断,微信?QQ?ipad?IE?移动?Google?opera……
    flexbox布局
    刮刮奖
    constructor
    获取地址栏参数
    this对象
    函数
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12942030.html
Copyright © 2011-2022 走看看