yzr95924 / leetcode_c

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Leetcode Question List (in C)

前缀和 && Hash && Heap

  • 49: 字母异位词分组 ans[medium]
    • 字符串内部排序作为key + hashMap统计
  • 128: 最长连续序列 ans[medium]
    • hashMap数组去重 + 遍历x, x+1, x+2, ... + 检查 x-1是否存在,避免重复扫描
  • 169: 多数元素 ans[easy]
    • hashMap计数 + 遍历统计
  • 239: 滑动窗口最大值 ans[hard]
    • MaxHeap: 插入右边的item + item (val, idx) + idx判断是否在win里面
  • 523: 连续的子数组和 ans[medium]
  • 560: 和为 K 的子数组 ans[medium]
    • 前缀和:O(n)遍历数组,计算前缀和,找到目标值,更新hash table
  • 974: 和可被 K 整除的子数组 ans[medium]
  • 1590: 使数组和能被P整除 ans[medium]

贪心 && DP

  • 45: 跳跃游戏 II ans[medium]
    • 贪心:统计当前最远可达距离,注意加步数的条件
  • 53: 最大子数组和 ans[medium]
    • 贪心:当前和如果为负数的话,应该重新清零开始计算
  • 55: 跳跃游戏 ans[medium]
    • 同45,判断当前可达最远距离是否满足边界
  • 70: 爬楼梯 ans[easy]
  • 118: 杨辉三角 ans[easy]
    • dp[i][j] = dp[i - 1][j] + d[i - 1][j - 1]
  • 121: 买卖股票的最佳时机 ans[easy]
  • 122: 买卖股票的最佳时机 II ans[medium]
  • 413: 等差数列划分 ans[medium]
  • 763: 划分字母区间 ans[medium]
    • 统计每个字母出现的最后位置,然后同45, 55
  • 1094: 拼车 ans[medium]
  • 1109: 航班预订统计 ans[medium]

滑动窗口 && 双指针

  • 3: 无重复字符的最长子串 ans[medium]
    • 滑动窗口 + 字符串判断重复
  • 5: 最长回文子串 ans[medium]
  • 11: 盛最多水的容器 ans[medium]
    • 双指针:从两端开始扫,哪端高度小,调整哪端
  • 15: 三数之和 ans[medium]
    • 双指针 + 排序 + 去重:相同元素要去重
  • 42: 接雨水 ans[hard]
    • 双指针:遍历每一列,计算其左边max、右边max,再计算面积,可以优化提前计算每一列左边和右边的max
  • 76: 最小覆盖子串 ans[hard]
    • 滑动窗口:用hashmap判断是否为子串
  • 189: 轮转数组 ans[medium]
    • 旋转数组:整体旋转一次 + 分别旋转两次 + 不使用额外的空间
  • 209: 长度最小的子数组 ans[medium]
  • 283: 移动零 ans[easy]
    • 双指针:先移动非零,再填0
  • 438: 找到字符串中所有字母异位词 ans[medium]
    • 滑动窗口 + 判断是不是异位词
  • 1004: 最大连续1的个数 III ans[medium]
  • 1208: 尽可能使字符串相等 ans[medium]

查找 & 排序

  • 33: 搜索旋转排序数组 ans[medium]
    • 分段**:看成两段有序的数组,分别进行二分查找
  • 34: 在排序数组中查找元素的第一个和最后一个位置 ans[medium]
    • 二分查找找到target的idx,在向两边搜索到边界
  • 35: 搜索插入位置 ans[easy]
    • 二分查找
  • 74: 搜索二维矩阵 ans[medium]
    • 两次二分查找
  • 75: 颜色分类 ans[medium]
    • 维护一个头部的index,不断交换对应的数字到头部的index,排完0和1,2自然就排序好了
  • 56: 合并区间 ans[medium]
    • 先sort区间的leftBound,然后再遍历,看是否需要合并
  • 240: 搜索二维矩阵 II ans[medium]
    • 每行分别进行二分查找
  • 406: 根据身高重建队列 ans[medium]
  • 853: 车队 ans[medium]

字符串 && 数组

  • 6: N字形变换 ans[medium]
  • 8: 字符串转换整数 (atoi) ans[medium]
  • 43: 字符串相乘 ans[medium]
  • 165: 比较版本号 ans[medium]
  • 1071: 字符串的最大公因子 ans[easy]

回溯

  • 17: 电话号码的字母组合 ans[medium]
  • 22: 括号生成 ans[medium]
  • 37: 解数独 ans[hard]
  • 46: 全排列 ans[medium]
    • 标准回溯问题:回溯三部曲:回溯函数模板返回值以及参数,回溯函数终止条件,回溯搜索的遍历过程
  • 60: 排列序列 ans[hard]
  • 77: 组合 ans[medium]
  • 78: 子集 ans[medium]
    • 标准回溯问题:注意停止回溯的条件
  • 113: 路径总和 II ans[medium]

  • 20: 有效的括号 ans[easy]
    • 基本栈操作
  • 84: 柱状图中最大的矩形 ans[medium]
    • 单调栈:单调递增,统计左边,右边的最近小于的高度,注意边界值处理
  • 155: 最小栈 ans[medium]
    • 维护两个栈:realStack + minStack
  • 394: 字符串解码 ans[medium]
    • 基本栈操作 + 倒序遍历字符串
    • 数字栈 + 字符栈:逆波兰表达式
  • 678: 有效的括号字符串 ans[medium]
    • 维护两个栈:* + ()
  • 739: 每日温度 ans[medium]
    • 单调栈:单调递减
  • 84: 柱状图中最大的矩形 ans[medium]
  • 962: 最大宽度坡 ans[medium]

链表

  • 160:相交链表 ans[easy]
    • 暴力一些,直接用hashmap存node的指针

双指针

  • 11: 盛最多水的容器 ans[medium]
  • 876: 链表的中间结点 ans[easy]

数学

  • 1: 两数之和 ans[easy]
  • 2: 两数相加 ans[medium]
  • 4: 寻找两个正序数组的中位数 ans[hard]
  • 7: 整数反转 ans[medium]
  • 9: 回文数 ans[easy]
  • 13: 罗马数字转整数 ans[easy]
  • 41: 缺失的第一个正数 ans[hard]
    • 原地hash: f(nums[i]) = nums[i] - 1
  • 48: 旋转图像 ans[medium]
    • 推公式:计算旋转之后的坐标
  • 54: 螺旋矩阵 ans[medium]
    • 模拟旋转状态:状态数组,记录每个方向时候如何更新row和col
  • 66: 加一 ans[easy]
  • 73: 矩阵置零 ans[medium]
    • 标记数组: 行标记 + 列标记 + 遍历判断
  • 136: 只出现一次的数字 ans[easy]
    • 异或: 相同为0,不同为1, 出现两次的数直接消掉
  • 238: 除自身以外数组的乘积 ans[medium]
    • 构建左边的乘法表 * 右边的乘法表,转成O(n)
  • 1089: 复写零 ans[easy]

BFS && 树

  • 94: 二叉树的中序遍历 ans[easy]
    • 基本递归遍历流程
  • 102: 二叉树的层序遍历 ans[medium]
  • 104: 二叉树的最大深度 ans[easy]
    • 基本层序遍历,用队列
  • 111: 二叉树的最小深度 ans[easy]
  • 127: 单词接龙 ans[hard]
  • 139: 单词拆分 ans[medium]
  • 815: 公交路线 ans[hard]
  • 934: 最短的桥 ans[medium]

系统应用

  • 146: LRU 缓存 ans[medium]
    • Map + LinkedList
  • 215: 数组中的第K个最大元素 ans[medium]
  • 347: 前K个高频元素 ans[medium]
  • 295: 数据流的中位数 ans[hard]
    • (MinHeap + MaxHeap)找中位数

About

License:MIT License


Languages

Language:C 98.7%Language:CMake 0.9%Language:Shell 0.2%Language:C++ 0.1%