leetcode刷题总结551-600

551. 学生出勤记录 I

  描述:

    

 

 

   思路:字符串包含A的个数 和  是否包含“LLL”

552. 学生出勤记录 II

  描述:

    

 

 

   思路:动态规划。dp[0-n][0-1 A][0-1-2 L]。 状态转移根据题意分情况  添加P时候, 添加A的时候  L的时候。。

553. 最优除法

  描述:

    

 

 

   思路:题中说全部都是正整数,那么第1个数就是被除数。后面的所有就是除数。(被除数最大,除数最小)。

554. 砖墙

  描述:

    

 

 

     

 

 

   思路:对于每个间隔进行统计。找到最小的就行。

556. 下一个更大元素 III

  描述:

    

 

   思路:转换为字符串,总后往前,通过单调栈找到突然变小的值,然后在后面找所有大的最小i的大于它的,交换,然后交换那个突然变小的地方的后面。

 

560. 和为K的子数组

  描述:

    

 

 

   思路:前缀和。hashmap<sum,count>.当出现某一个前缀和的时候,看这个前缀和-k是否存在。

561. 数组拆分 I

  描述:

    

 

 

   思路:排序。nums[i]+[i+2]+[i+4]...

564. 寻找最近的回文数

  描述:

    

 

 

   思路:保留前一半。然后前一半+1;前一半;前一半-1 分别考虑求距离。

565. 数组嵌套

  描述:

    

 

 

   思路:遍历。遍历的时候需要设定一个visited数组,防止重复时间消耗。

567. 字符串的排列

  描述:
    

 

 

   思路:滑动窗口+hashset.

575. 分糖果

  描述:

    

 

 

   思路:去重之后有多少种. 和  数组的长度除以2.  的最小。

581. 最短无序连续子数组

  

 

   思路:从前往后,维护一个max和r  当当前元素小于max的时候,证明当前元素应该在他前面,那么这个下标就不是他本来的位置,那么r就换成当前的坐标,否则更新max的值保证max一直最大。同理从后往前更新min和l。

583. 两个字符串的删除操作

  描述:

    

 

 

   思路:两个单词的最长子序列。然后len1+len2-2*len(lcs)。 通过动态规划求最长子序列。dp[i][j]当i==j.的时候,它等于dp[i-1][]j-i]+1. 否则就是[i-1][j],[i]j-1的最大值,

592. 分数加减运算

  描述:

    

 

 

   思路:通分。求分子分母。

593. 有效的正方形

  描述:

    

 

 

   思路: 计算边长和和对角线是否相等。

594. 最长和谐子序列

  描述

      

 

 

   思路:hashmap存储。然后对于hashmap中的某个元素看这个元素的+1的个数和自己的个数。

598. 范围求和 II

  描述;
    

 

   思路:找到横坐标和纵坐标最小的,然后返回次数。

599. 两个列表的最小索引总和

  描述:

    

 

   思路:hashmap《string,index》

600. 不含连续1的非负整数

  描述:

    

 

   思路:判断一个数是否连续。将这个数和这个数右移后的树进行 & 运算 看是否为0.

 

    

posted @ 2020-07-14 12:12  _Meditation  阅读(165)  评论(0编辑  收藏  举报