• Day 52


    第459题:

    给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。(来自LeetCode)

    1、如果 s 字符串是子串 s1 对此重复 x 次拼接而成的,那么s的长度一定是s1长度的倍数,而且s的开头一定是s1的开头;

      那么就顺序遍历子串长度为1-n/2时,各子串是否相同,子串长度为 i ,那么s内第 j 个字符如果和第 j - i 个字符相等,且往后判断结束后都相同的话;

      s就一定是一个重复的字符串。

      

     第455题:

    假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。

    来源:力扣(LeetCode)

    注意:你可以假设胃口值为正一个小朋友最多只能拥有一块饼干。

    1、将最小的饼干给最小胃口的小孩,依次向大的方向判断;

      所以先将两数组排序,再对数组内元素遍历判断,得出最大可满足的小孩数量。

      

    第456题:

    给定一个整数序列:a1, a2, ..., an,一个132模式的子序列 ai, aj, ak 被定义为:当 i < j < k 时,ai < ak < aj。设计一个算法,当给定有 n 个数字的序列时,验证这个序列中是否含有132模式的子序列。来源:力扣(LeetCode)

    注意:n 的值小于15000。

     1、需要在数组种寻找是否含有132模式的子序列;

      可以看成是寻找一个a[j],然后在[ 0,j-1 ]内寻找一个比a[j] 小的数M1,且在[ j-1,n-1]内寻找一个比a[j]小的数M2,且M2>M1;

      利用栈来帮助寻找这个模式;

    •   先将数组内各段内的最小值找出作为132种的1
    •   然后遍历数组来寻找2,2必须要大于1,且2的下标也要大于1的下标,那么就从数组末尾开始遍历;当遍历到的元素大于此时队列里的最小值时,说明它可以作为2,那么将它入栈
    •   继续向前遍历,如果元素小于2但是大于1的话,也将元素入栈,因为那样时123,不是132
    •   因为栈内时寻找2,所以2必须要一直大于1(也就是此时序列内的最小值),如果不满足,需要将栈顶元素移除,直到栈顶元素大于此时序列的最小值
    •        继续向前遍历,如果遍历元素大于1(min)且大于栈顶元素,说明满足132模式,可以返回 true,如果遍历完后找不到就返回false

      

      



      

  • 相关阅读:
    C#发送Email邮件(实例:QQ邮箱和Gmail邮箱)
    MD5
    关节疼
    c#写入Mysql中文显示乱码 解决方法 z
    浅析基层检察院派驻乡镇检察室的健康发展 z
    查询数据库中所有名称相同的记录
    一个简单功能的SQL 实现
    java 的""和null的区别
    java 的 &和&&的区别
    mysql left join,right join,inner join的区别
  • 原文地址:https://www.cnblogs.com/liang-yi-/p/13557269.html
Copyright © 2020-2023  润新知