• 今日刷题总结-leetcode485、母牛繁殖问题、猴子偷桃问题(2020.11.7)


    Leetcode485

      题目:

        给定一个二进制数组, 计算其中最大连续1的个数。

        示例 1:

        输入: [1,1,0,1,1,1]
        输出: 3
        解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.
        注意:

        输入的数组只包含 0 和1。
        输入数组的长度是正整数,且不超过 10,000。

      本人思路:
    
        想利用两个数组,一个是原题目中的数组,一个是自定义数组count,count数组的作用是用来存储出现连续1后1的数量,比如 [1,0,1,1,1,0,0,1,1]这个数组,数组中是否每一个count索引存储出现连续1时1的数量,count[0]=1,count[1]=3,count[2]=2。采用for的嵌套循环,外层循环控制新数组的索引,内层循环用来控制原数组对连续1进行计数,每当碰到1就对count对应索引的元素加一,碰到0就退出本层循环,为了避免内层循环从头开始继续,需要用外层的变量对内层变量进行初始化。最后对count数组进行遍历之后提取出最大元素。
    
     

      伪代码:

        

    class Solution {
        public int findMaxConsecutiveOnes(int[] nums) {
            int[] count = new int[1000000];
            int max =0;
            for(int j =0;j<count.length;j++)
            {
                for(int i=j;i<nums.length;i++)
                {
                    if(nums[i]==1)
                    {
                        count[j]++;
                    }
                    if(nums[i]==0)
                    {
                        break;
                    }         
                }
            }
            for(int j =0;j<count.length;j++)
            {
                
                if(count[j]>max)
                {
                    max = count[j];
                }
            }
            return max;
        }
    }

    蓝桥杯(1004)-母牛的故事

      题目:   

        题目描述

          有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?

        输入

          输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
          n=0表示输入数据的结束,不做处理。

        输出

          对于每个测试实例,输出在第n年的时候母牛的数量。
          每个输出占一行。

        样例输入
          2
          4
          5
          0
        样例输出
          2
          4
          6

     本人思路:
      
        首先观察题目,不难发现母牛在前三年内的数量都为1,但在第4年开始,牛的总数等于前一年和前第三年这两年牛数量的总和,这不禁让我想到了斐波那契数列数列,这个数列从第3项开始,每一项都等于前两项之和。
        所以我们只需要定义第一年和第三年牛的总数,就可以利用循环计算出对应年份的牛的总数。
     

      伪代码:


    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            Scanner sc = new Scanner(System.in);
            int[] num = new int[3];
            int i =0;
            //hasNext使得判断为true时不断输入。
            while(sc.hasNext())
            {
                int n = sc.nextInt();
                if(n==0)
                {
                    break;
                }
    
                num[i] = cownum(n);
                i++;
            }
            for (int j =0;j<num.length;j++)
            {
                System.out.println(num[j]);
            }
        }
        public static int cownum(int x) {
            //定义一个长度为60的数组
            int[] a = new int[60];
            a[0] = 1;
            a[1] = 2;
            a[2] = 3;
            //类斐波那契数列
            for(int i=3;i<x;i++)
            {
                a[i] = a[i-1]+a[i-3];
            }
    
            return a[x-1];
        }
    }
    
    

    蓝桥杯(1020)-猴子吃桃

      题目:    
        题目描述:
          猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。
        输入
          N
        输出
          桃子总数
        样例输入
          10
        样例输出
          1534

    个人思路:
      既然知道最后只剩下了一个桃子,我们不妨采用逆向推理,从最后剩下的一个桃子上做文章,找出初始桃子总数和下一台你桃子总数之间的关系为2n+2,采用递归的方法轻松解决这道题目,关键的递归的条件就是我们知道最后仅仅剩下一个桃子。
    
    
    
       伪代码题解:  
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int day = sc.nextInt();
    
            System.out.println(eat(day));
            
        }
        private static int eat(int n){
            if (n==1){
                return 1;
            }
            return(2+2*eat(n-1));
        }
    }
    
    
    
     


    
    
  • 相关阅读:
    3.5——课题选择
    3.8——K-th Substring
    01背包dp
    贪心——IQ
    Secret Project Gym
    快速幂&矩阵快速幂
    用栈非递归实现fib数列
    CodeForces Round #590 (Div 3)
    SQL Server常见问题
    SQL基础函数
  • 原文地址:https://www.cnblogs.com/MurasameLory-chenyulong/p/13942035.html
Copyright © 2020-2023  润新知