牛客竞赛每日俩题 - Day8

简介: 牛客竞赛每日俩题 - Day8

数学证明简化法

跳台阶扩展问题__牛客网

证明过程:

链接:跳台阶扩展问题__牛客网

关于本题,前提是n个台阶会有一次n阶的跳法。分析如下:

f(1) = 1

f(2) = f(2-1) + f(2-2)         //f(2-2) 表示2阶一次跳2阶的次数。

f(3) = f(3-1) + f(3-2) + f(3-3)

...

f(n) = f(n-1) + f(n-2) + f(n-3) + ... + f(n-(n-1)) + f(n-n)

说明:

1)这里的f(n) 代表的是n个台阶有一次1,2,...n阶的 跳法数。

2)n = 1时,只有1种跳法,f(1) = 1

3) n = 2时,会有两个跳得方式,一次1阶或者2阶,这回归到了问题(1) ,f(2) = f(2-1) + f(2-2)

4) n = 3时,会有三种跳得方式,1阶、2阶、3阶,

   那么就是第一次跳出1阶后面剩下:f(3-1);第一次跳出2阶,剩下f(3-2);第一次3阶,那么剩下f(3-3)

   因此结论是f(3) = f(3-1)+f(3-2)+f(3-3)

5) n = n时,会有n中跳的方式,1阶、2阶...n阶,得出结论:

   f(n) = f(n-1)+f(n-2)+...+f(n-(n-1)) + f(n-n) => f(0) + f(1) + f(2) + f(3) + ... + f(n-1)

6) 由以上已经是一种结论,但是为了简单,我们可以继续简化:

   f(n-1) = f(0) + f(1)+f(2)+f(3) + ... + f((n-1)-1) = f(0) + f(1) + f(2) + f(3) + ... + f(n-2)

   f(n) = f(0) + f(1) + f(2) + f(3) + ... + f(n-2) + f(n-1) = f(n-1) + f(n-1)

   可以得出:

   f(n) = 2*f(n-1)

7) 得出最终结论,在n阶台阶,一次有1、2、...n阶的跳的方式时,总得跳法为:

             | 1       ,(n=0 )

f(n) =     | 1       ,(n=1 )

             | 2*f(n-1),(n>=2)

简单来说:

f(n):求跳台阶总共的跳法

f(n-step):step表示第一次跳的台阶数,然后后面有f(n-step)种跳法

于是

f(n) = f(0) + f(1) + f(2) + f(3) + ... + f(n-2) + f(n-1)

f(n-1) =  f(0) + f(1) + f(2) + f(3) + ... + f(n-2)

所以  f(n)  = f(n-1) + f(n-1)= 2*f(n-1)

class Solution {
public:
    int jumpFloorII(int number) {
        return 1<<(number-1);//2^(n-1) == 1 << (n-1)
    }
};

链表模拟

反转部分单向链表__牛客网

思路:

找到反转链表的前一个节点,找到反转链表的头结点

让反转链表的后R-L个节点顺序头插

list_node * reverse_list(list_node * head, int L, int R)
{
    list_node* pHead=new list_node;//设新头结点用于头插
    pHead->next=head;
    list_node*prevNode=pHead;//表示反转部分链表的前一个节点
    for(int i=0;i<L-1;i++) prevNode=prevNode->next;
    list_node* cur=prevNode->next;//表示反转链表的头结点
    for(int i=0;i<R-L;i++)//需要反转R-L个节点
    {
        list_node* nextNode=cur->next;
        cur->next=nextNode->next;    //先连接下一节点
        nextNode->next=prevNode->next;//再头插
        prevNode->next=nextNode;
    }
    list_node* list=pHead->next;
    free(pHead);
    return list;
}
相关文章
|
容器
牛客竞赛每日俩题 - Day10
牛客竞赛每日俩题 - Day10
|
测试技术 数据库
牛客竞赛每日俩题 - Day12
牛客竞赛每日俩题 - Day12
|
算法
牛客竞赛每日俩题 - Day14
牛客竞赛每日俩题 - Day14
牛客竞赛每日俩题 - Day9
牛客竞赛每日俩题 - Day9
|
人工智能 BI
牛客竞赛每日俩题 - Day4
牛客竞赛每日俩题 - Day4
113 0
牛客竞赛每日俩题 - Day4
牛客竞赛每日俩题 - Day2
牛客竞赛每日俩题 - Day2
|
存储 测试技术
牛客竞赛每日俩题 - Day13
牛客竞赛每日俩题 - Day13
100 0
|
机器学习/深度学习 测试技术 C语言
牛客竞赛每日俩题 - Day11
牛客竞赛每日俩题 - Day11
牛客竞赛每日俩题 - Day5
牛客竞赛每日俩题 - Day5