Skip to content

Willberg/invoker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

invoker

学习算法和数据结构的项目, 提供java, go, c, c++和python版, 记录了leetcode上常见的的题目和相关解答, 尽量提供详尽的注释进行解答. HOT100最好全部做一遍, 出现在周赛里的会特别标出, 其他按星级排名, 星越多越重要.

算法

常见的练习题, 包括贪心算法, 双指针, 二分查找, 排序, 优先搜索, 动态规划, 分治法, 数学, 位运算.

  • 双指针: 基本双指针, 快慢指针, 滑动窗口
  • 优先搜索: 深度优先, 回溯, 广度优先
  • 排序:
    • 比较排序: 冒泡排序, 插入排序, 选择排序, 希尔排序, 快速排序, 堆排序, 归并排序
    • 非比较排序: 计数排序, 桶排序, 基数排序
  • 动态规划: 一维, 二维, 分割类型题, 子序列问题, 背包问题, 字符串编辑, 股票交易
  • 数学: 公倍数与公因数, 质数, 数字处理, 随机与采样

贪心

核心思想: 每次操作都是局部最优的,从而使最后得到的结果是全局最优的。

题号 题目名称 代码 难度 级别
11 盛最多水的容器 Java 中等 HOT100
55 跳跃游戏 Java 中等 HOT100
406 根据身高重建队列 Java 中等 HOT100
581 最短无序连续子数组 Java 中等 HOT100
621 任务调度器 Java 中等 HOT100
921 使括号有效的最少添加 Go C 中等 ⭐️
2086 从房屋收集雨水需要的最少水桶数 Java 中等 第 66 场双周赛
2087 从数组中移除最大网格图中机器人回家的最小代价值和最小值 Java 中等 第 66 场双周赛
2091 从数组中移除最大值和最小值 Java 中等 第 269 场周赛

双指针

基本双指针

题号 题目名称 代码 难度 级别

快慢指针

题号 题目名称 代码 难度 级别

滑动窗口

题号 题目名称 代码 难度 级别
2090 半径为 k 的子数组平均值 Java 中等 第269场周赛

二分查找

二分查找也常被称为二分法或者折半查找,每次查找时通过将待查找区间分成两部分并只取一部分继续查找,将查找的复杂度大大减少。对于一个长度为 O(n)的数组,二分查找的时间复杂度为 O(log n)。

题号 题目名称 代码 难度 级别
4 寻找两个正序数组的中位数 Java 困难 HOT100
33 搜索旋转排序数组 Java 中等 HOT100
34 在排序数组中查找元素的第一个和最后一个位置 Java 中等 HOT100
240 搜索二维矩阵II Java 中等 HOT100
287 寻找重复数 Java 中等 HOT100
300 最长递增子序列 Java 中等 HOT100

数据结构

常见的练习题, 包括数组, 字符串, 栈, 队列, 哈希表, 多重集合与映射, 前缀和与积分图, 链表, 树, 图, 复杂数据结构.

  • 栈: 基本栈, 单调栈
  • 队列: 优先队列, 双端队列
  • 树: 二叉树, 二叉搜索树, 字典树
  • 复杂数据结构: LRU, 并查集

数组

题号 题目名称 代码 难度 级别
2089 找出数组排序后的目标下标 Java 中等 第269场周赛

队列

优先队列
题号 题目名称 代码 难度 级别
设计通用版优先队列 Java Go C 困难 ⭐️⭐️⭐️⭐️
23 合并K个升序链表 Java Go C 困难 ⭐️⭐️⭐️⭐️

链表

题号 题目名称 代码 难度 级别
4 用C语言实现malloc和free函数 C 困难 ⭐️⭐️⭐️⭐️
707 设计链表 Go C 中等 ⭐️⭐️⭐️

哈希

题号 题目名称 代码 难度 级别
5 用go实现一个并发的map Go 困难 ⭐️⭐️⭐️⭐️
817 链表组件 Go C 中等 ⭐️

最短路径

重点是迪杰斯特拉算法

题号 题目名称 代码 难度 级别
1514 概率最大的路径 Java 中等 ⭐️⭐️⭐️

复杂数据结构

并查集
题号 题目名称 代码 难度 级别
399 除法求值 Go Java 中等 HOT100
跳表
题号 题目名称 代码 难度 级别
1206 设计跳表 C Go C++ 困难 ⭐️⭐️⭐️⭐️
平衡二叉搜索树
题号 题目名称 代码 难度 级别
2 设计平衡二叉搜索树 C Go 困难 ⭐️⭐️⭐️⭐️
3 设计红黑树 C++ Go 困难 ⭐️⭐️⭐️⭐️
后缀数组
题号 题目名称 代码 难度 级别
1754 构造字典序最大的合并字符串 Go 中等 ⭐️⭐️⭐️⭐️

多线程

重点要掌握锁,信号量

题号 题目名称 代码 难度 级别
1114 按序打印 Java 中等 ⭐️⭐️⭐️
1115 交替打印FooBar Java 中等 ⭐️⭐️⭐️
1116 打印零与奇偶数 Java Go 中等 ⭐️⭐️⭐️
1117 H2O 生成 Java 中等 ⭐️⭐️⭐️
1195 交替打印字符串 Java 中等 ⭐️⭐️⭐️
1226 哲学家进餐 Java 中等 ⭐️⭐️⭐️
读写锁 Java Go 中等 ⭐️⭐️⭐️

数据库

题号 题目名称 代码 难度 级别
176 第二高的薪水 sql 中等 ⭐️⭐️⭐️
177 第N高的薪水 sql 中等 ⭐️⭐️⭐️
185 部门工资前三高的所有员工 sql 中等 ⭐️⭐️⭐️
596 超过5名学生的课 sql 中等 ⭐️⭐️⭐️

分布式

题号 题目名称 代码 难度 级别
一致性hash Java 中等 ⭐️⭐️⭐️
分布式自增ID Java 中等 ⭐️⭐️⭐️

shell

题号 题目名称 代码 难度 级别
195 第十行 bash 中等 ⭐️⭐️⭐️

About

leetcode上数据结构和算法的题解

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published