• LeetCode一句话题解


    链表

    Leetcode146

    题目:设计一个LRU类。

    题解:Java采用LinkedHashMap,重载removeEldestEntry即可;或采用HashMap + 双链表方式,通过HashMap查询对应节点,双链表查询对应位置,进行操作。

    深度优先搜索

    人生经验

    1. 需要输出所有解、并由于元素集有重复元素,要求返回的结果需要去重的情况,可考虑使用值对应数量的map,然后分别考虑依次取不同数量该值的可能。

    LeetCode39

    题目:给定一堆数,每个数可以用无限多次,问凑出目标数target的结果集,要求不能重复。

    题解:爆搜,设计为dfs(cur, target),cur为当前用第i个数,这个数用0到target / candidates[cur]个。

    LeetCode 216

    题目:给定数字1到9,从中选 k 个数,返回所有方案,要求方案中不包含相同数字,且答案中不包含相同的方案。

    题解:爆搜,从1搜到9,「包含当前数的答案」 和 「不包含当前数答案」的并集组成题解。

    LeetCode 22

      题目:给定括号数量,输出与之可能的括号序列。

      题解:设定条件,不能允许右括号数小于左括号,直接暴搜即可。

    LeetCode 52

      题目:N皇后问题。

      题解:数据范围不大,回溯法即可。

    LeetCode 473

      题目:给定一堆数,问可否由边长为这些数的的火柴,拼接出正方形。

      题解:暴搜 + 减枝,如果这些数不能整除4,则不可能;分别把这个数放到1、2、3、4号边进行搜索,若当前号边超过期望边值,则返回。

    动态规划

    人生经验

    LeetCode 121

    题目:股票买卖,只允许一次买卖的情况

    题解:

    方法1. 建立数组,分别存该点之后的最大价格,然后利用该数组对应点值减该点价格,取最大。

    方法2. 动态规划,等于该点之前的最大收益,或者该点减去之前最低价格,这两种情况的最大收益。

    LeetCode 122

    题目:股票买卖,允许多次买卖。

    题解:爬坡法。如果今天价格高于昨天价格,则可以进行一次买卖,即可以爬坡,累加即可。

    LeetCode 123

    题目:股票买卖,只允许2次买卖。

    题解:遍历第二次的买入点;得到该点前第一次购买的最大获利,加上在该点买入所能最大获利,即可得到答案。

    LeetCode 72

    题目:通过增、删、改,使一个字符串变为另一个字符串

    题解:与LCS相同,定义dp[i][j]为word1在i位置,word2在j位置时,需要操作的次数。

    LeetCode 322

    题目:零钱兑换,每个钱数量不限

    题解:多重背包,但初始化为INT_MAX,dp[0]初始化为0。

    LeetCode 198

    题目:打家劫舍,给定数组,选出数字,要求所选数字不能相邻,求所能选出的数字最大和。

    题解:线性dp,状态需要两个状态,选当前数与不选当前数时所能得到最大值。

    人生经验

    1. LeetCode 145

    LeetCode 145

    题目:用迭代实现二叉树后序遍历

    题解:栈,将当前节点左子树依次入栈,如果遍历过了左子树,则将当前节点left置为null以标记,右子树同理。

    LeetCode 105

    题目:无重复节点,根据先序和中序遍历序列,构建二叉树。

    题解:递归,先序序列第一个节点,即使根节点,可根据中序找到左右子数的节点,递归处理。

    LeetCode 102

    题目:层序遍历二叉树。

    题解:采用单队列层序遍历,以NULL作为分隔符。

    LeetCode 124

    题目:找到二叉树中的最大带权路径。

    题解:维护三个状态,节点的左最长路径、节点的右最长路径、通过该节点的最长路径,遍历求最大值。

    特殊数据结构

    LeetCode 239

    题目:滑动窗口最大值,给定一个数列,及一个窗口,窗口向右滑动,求当前窗口中的最大值

    题解:单调队列

    二分

    LeetCode 69

    题目:求平方根

    题解:浮点数二分

    LeetCode 34

    题目:lower_bound与upper_bound

    题解:二分模板

    LeetCode 35

    题目:寻找数字插入点

    题解:二分模板

    LeetCode 153

    题目:寻找一个单次旋转数组中的最小值

    题解:画个图,分别和左右端点做比较进行二分查找。

  • 相关阅读:
    [Ansible]copy 模块
    [Ansible]script模块
    [Ansible]command shell模块
    [Ansible]Systemd 模块
    [Ansible]YUM 模块
    [Ansible]yum_repository模块 添加 删除yum源
    [Ceph]osd 无法启动 start request repeated too quickly for ceph-osd@1.service
    [Ceph]pool 删除 Error EPERM: pool deletion is disabled; you must first set the mon_allow_pool_delete config option to true before you can destroy a pool
    题解 烷基计数 加强版 加强版
    Polya 定理 学习笔记
  • 原文地址:https://www.cnblogs.com/tomoka/p/10742007.html
Copyright © 2020-2023  润新知