• leetcode刷题总结201-250


    201. 数字范围按位与

      描述:

        输入: [5,7]
        输出: 4

      思路:范围的数字每个数字右移一位。当都一样之后就可以停止了。然后把0添加上。

    202. 快乐数

      描述:

        输入:19
        输出:true
        解释:
        12 + 92 = 82
        82 + 22 = 68
        62 + 82 = 100
        12 + 02 + 02 = 1

      思路:把每个数字按照逻辑计算即可。用一个hashset存储已经出现的数字,重复出现就停止。

    203. 移除链表元素

    204. 计数质数

      描述:

        输入: 10
        输出: 4
        解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。

      思路:编写一个函数用于判断这个数是质数(i从头遍历到根号N.)然后将1-10的数字是否是数字置为true,然后从头开始判断,偶数不判断,遇到质数,就把质数的倍数也置为false.

    205. 同构字符串

      描述:

        输入: s = "egg", t = "add"
        输出: true

      思路:hashmap存储。

    206. 反转链表

    207. 课程表

      描述:

        输入: 2, [[1,0]]
        输出: true
        解释: 总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以这是可能的。

      思路:图的拓扑。

    208. 实现 Trie (前缀树)

    209. 长度最小的子数组

      描述:

        输入:s = 7, nums = [2,3,1,2,4,3]
        输出:2
        解释:子数组 [4,3] 是该条件下的长度最小的子数组。

      思路:双指针控制窗口的长度。

    210. 课程表 II

      描述:

        输入: 2, [[1,0]]
        输出: [0,1]
        解释: 总共有 2 门课程。要学习课程 1,你需要先完成课程 0。因此,正确的课程顺序为 [0,1] 。

      思路:图的拓扑排序。

    211. 添加与搜索单词 - 数据结构设计

      描述:

      

       思路:字典树+回溯。

    212. 单词搜索 II

      描述:

        

       思路:words先用字典树存储。然后在方格中上下左右遍历。其中用到回溯即可。

    213. 打家劫舍 II

      思路:动态规划

    214. 最短回文串

      描述:

        

       思路:可以将此字符串和反转进行拼接,用KMP算法求next数组。通过数组的值来

    215. 数组中的第K个最大元素

      描述:

        

       思路:快速排序。比如先选3,最后决定了3的最终位置是第三个。那么k=2就在前面取快排继续找。

    216. 组合总和 III

      描述:

        

       思路:回溯算法。

    217. 存在重复元素

      思路:hash

    218. 天际线问题

      描述:

        

       思路:分治。分治最终进行合并两个天际线。合并的时候需要考虑重合问题。先去处理x重合,ymax的情况。再去加上剩余的。

    219. 存在重复元素 II

      描述:

        

       思路:hashset存储窗口

    220. 存在重复元素 III

      描述:

        

       思路:treeset中的ceiling函数。用于处理t的范围。

    221. 最大正方形

      描述:

        

       思路:动态规划。dp[i][j]代表当前点的最大正方形面积。dp[i][j]=min(i-1,j-1;i-1,j;i,j-1)+1(i,j为1的话)

    222. 完全二叉树的节点个数

      描述:

        

       思路:递归。

    223. 矩形面积

      描述:

        

       思路:两个相加-共同的。

    224. 基本计算器

    225. 用队列实现栈

    226. 翻转二叉树

    227. 基本计算器 II

    228. 汇总区间

    229. 求众数 II

      描述:

        

       思路:投票法。选取几个种子。当出现这个种子++;否则--;‘当小于0后换当前这个种子,最后统计。

    230. 二叉搜索树中第K小的元素

      思路:深度优先进行中序遍历。

    231. 2的幂

       思路:移位。

    232. 用栈实现队列

    233. 数字 1 的个数

      描述:

        输入: 13
        输出: 6
        解释: 数字 1 出现在以下数字中: 1, 10, 11, 12, 13 。

      思路:统计规律。

    234. 回文链表

      描述:

        输入: 1->2->2->1

        输出: true

       思路:快慢双指针找到中点。反转后面的。然后开始遍历。

    235. 二叉搜索树的最近公共祖先

      描述:

        

       思路:根节点判断都小于还是都大于,还是小于大于。

    236. 二叉树的最近公共祖先

      描述:

        

       思路:递归查找。left,right。left=null证明都在右边。否则都在左边。left!=null&&right!=null  直接返回当前root

    237. 删除链表中的节点

    238. 除自身以外数组的乘积

      描述:

        输入: [1,2,3,4]
        输出: [24,12,8,6]

      思路:从左往右。从右往左。分别计算当前元素的前面的成绩。然后两个数组对应位置成绩。

    239. 滑动窗口最大值

      描述

        

       思路:双端队列。保证队列的头部为当前窗口的最大值。队列记录的是当前最大值的下标,用于处理窗口的大小。队列是单调递减的。

    240. 搜索二维矩阵 II

    241. 为运算表达式设计优先级  

      描述:

        输入: "2*3-4*5"
        输出: [-34, -14, -10, -10, 10]
        解释:
            (2*(3-(4*5))) = -34
            ((2*3)-(4*5)) = -14
            ((2*(3-4))*5) = -10
            (2*((3-4)*5)) = -10
            (((2*3)-4)*5) = 10

      思路:通过运算符进行分治。

    242. 有效的字母异位词

      描述:

        输入: s = "anagram", t = "nagaram"
        输出: true

      思路:hash

    243-250。。。。

  • 相关阅读:
    (转)SQL Server 2005两种安全验证模式
    C#练习题记录(交换两个数1)
    C# using 用法
    服务器的理解(菜鸟)
    zZ
    ZzZ
    [转]Arcgis制作泰森多边形具体步骤
    [转]免费网站推广
    [转]如何让Firefox优化得比Chrome更快
    [转]3天搞定网站重新被百度收录的方法
  • 原文地址:https://www.cnblogs.com/dhName/p/13261927.html
Copyright © 2020-2023  润新知