Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

老宋秋招刷题日记, 语言使用python 与 c++

Notifications You must be signed in to change notification settings

Xiang011110/python-algorithm

Repository files navigation

Introduction

本仓库是我在准备 2020 届秋招时所刷过的题,刷题对于找工作的重要性不言而喻, 如果你现在还没有开始,我的建议是从明天开始,一天5道。 如果你按照我的这个仓库的目录进行刷题,刷个两三遍,对于每道题都能很快的产生思路, 那么毕业找工作的时候,BAT 面试时候的手撸算法这关,你是完全没有问题的。

该仓库大概包含 300+ 道编程题, 是由我个人筛选的, 基本所有的知识点都有涉及到,目前仓库还在更新中,预计12月底完成。

  • docs: 该文件夹下包含了诸多数据结构基础知识,如果对哪一方面不熟悉可以参考一下

[TOC]

1. 链表

1. 剑指 offer

offer 6: 从头到尾打印链表 offer 18 :删除链表中重复的节点 offer 22: 链表中的倒数第 k 个节点
offer 23: 链表中环的入口节点 offer 25: 反转链表 offer 25: 合并两个排序的链表
offer 35: 复杂链表的复制 offer 52: 两个链表的第一个公共节点

2. Leetcode Easy

leetcode 206: 反转链表 leetcode 160: 链表相交 leetcode 21: 排序链表的合并
leetcode 234: 回文链表 leetcode 237: 删除链表中的节点 leetcode 83: 删除排序链表中重复的节点
leetcode 203: 移除链表元素

3. Leetcode Medium

leetcode 92:反转链表 leetcode 141: 环形链表 leetcode 142: 环形链表2
leetcode 86: 链表划分 leetcode 138: 复制带随机指针的链表 leetcode 2: 两数相加
leetcode 148:排序链表 leetcode 328: 奇偶链表 leetcode 445: 两数相加2
leetcode 82: 删除排序链表中的重复元素2 leetcode 24: 两两交换链表中的节点 leetcode 147: 对链表进行插入排序
leetcode 148: 排序链表 leetcode 19: 删除链表的倒数第 N 个节点 leetcode 61: 旋转链表
leetcode 143: 重排链表

4. Leetcode Hard

leetcode 23: 合并 k 个有序链表 leetcode 25: k 个一组翻转链表

2. 数组

1. 剑指 offer

offer 3:数组中重复的数字 offer 4:二维数组的查找 offer 11: 旋转数组中的最小数字
offer 21: 调整数组的顺序 offer 39: 数组中出现次数超过一半的数字 offer 40: 最小 k 个数
offer 41: 数据流中的中位数 offer 42: 连续子数组的最大和 offer 43: 1出现的次数
offer 44: 数字序列中的某一位数字 offer 45: 把数组排成最小的数 offer 46: 把数字翻译成字符串
offer 51: 数组中的逆序对 offer 53: 排序数组中查找数字 offer 56:数组中只出现一次的两个数字
offer 57:和为 s 的两个数字 offer 61:扑克牌的顺子 offer 63: 股票的最大利润
offer 66: 构建乘积数组 offer 59:滑动窗口最大值

2. Leetcode Easy

leetcode 283: 移动零 leetcode 27: 移除元素 leetcode 26:删除排序数组中的重复项
leetcode 88: 合并两个有序数组 leetcode 167: 两数之和 2 leetcode 400: 第 N 个数
leetcode 1: 两数之和 leetcode 121: 买卖股票的最佳时机 leetcode 136: 只出现一次的数字
leetcode 169: 求众数 leetcode 448: 找到所有数组中消失的数字 leetcode 581: 最短无序连续子数组

3. Leetcode Medium

leetcode 80: 删除排序数组中的重复项2 leetcode 75: 颜色分类 leetcode 215: 数组中的第 k 个最大元素
leetcode 11: 盛最多水的容器 leetcode 209: 长度最小的子数组 leetcode 238: 除自身之外的乘积
leetcode 91: 解码方法 leetcode 15: 三数之和 leetcode 287: 寻找重复数
leetcode 338: 比特位计数 leetcode 347: 前 k 个高频元素 leetcode 406: 根据身高重建队列
leetcode 523: 连续的子数组和 leetcode 739: 每日温度 leetcode 795: 区间子数组个数

4. Leetcode Hard

leetcode 128: 最长连续序列

3. 字符串

1. 剑指 offer

2. Leetcode Easy

leetcode 344: 反转字符串 leetcode 345: 反转字符串中的元音字母 leetcode 438: 找到字符串中的所有字母异位词

3. Leetcode Medium

leetcode 3: 无重复字符的最长子串

4. Leetcode Hard

leetcode 76: 最小覆盖子串

4. 回文串

1. Leetcode Easy

leetcode 125: 验证回文串

5. 栈-队列-堆

1. 剑指 offer

offer 9: 两个栈实现队列 offer 9: 两个队列实现一个栈 offer 30:包含 min 函数的栈
offer 31:栈的压入,弹出序列

2. Leetcode Easy

leetcode 225: 用队列实现栈 leetcode 232: 用栈实现队列 leetcode 155: 最小栈
leetcode 20: 有效的括号

3. Leetcode Medium

leetcode 215: 数组中的第 k 个最大元素 leetcode 946: 验证栈序列

4. Leetcode Hard

leetcode 224: 基本计算器 leetcode 295: 数据流的中位数

6. 二叉树

1. 剑指offer

重建二叉树 二叉树的下一个节点 树的子结构
二叉树的镜像 对称的二叉树 不分行从上到下打印二叉树
分行从上到下打印二叉树 之字形打印二叉树 二叉树的后序遍历序列
二叉树中和为某一值的路径 二叉搜索树转化为双向链表 序列化二叉树
二叉搜索树的第 k 大节点 二叉树的深度 平衡二叉树

2. Leetcode Easy

leetcode 104: 二叉树最大深度 leetcode 111:二叉树的最小深度 leetcode 226 :翻转二叉树
leetcode 100: 相同的树 leetcode 112: 路径总和 leetcode 404: 左叶子之和
leetcode 257: 二叉树所有路径 leetcode 437: 路径总和3 leetcode 235: 二叉搜索树的最近公共祖先
leetcode 108: 将有序数组转化为二叉搜索树

3. Leetcode Medium

leetcode 144: 二叉树前序遍历 leetcode 94: 二叉树的中序遍历 leetcode 102: 二叉树的层序遍历
leetcode 96: 不同的二叉搜索树 leetcode 105: 从前序和中序遍历构造二叉树 leetcode 98: 二叉搜索树
leetcode 333: 最大BST子树 leetcode 958:完全二叉树 leetcode 110: 平衡二叉树
leetcode 543: 二叉树的直径 leetcode 222: 完全二叉树节点个数 leetcode 1038: 从二叉搜索树到更大和树
leetcode 662: 二叉树最大宽度 leetcode 101: 对称二叉树 leetcode 199:二叉树的右视图
leetcode 113: 路径总和 2 leetcode 129: 求根到叶子节点数字之和 leetcode 450: 删除二叉搜索树中的节点
leetcode 230: 二叉搜索树中的第 k 小的元素 leetcode 236: 二叉树的最近公共祖先

4. Leetcode Hard

leetcode 145: 二叉树的后序遍历

查找问题

这里指的查找问题主要包括以下两类:

  • 查找元素 a 是否存在? 一般采用集合 Set 来做。
  • 查找元素 a 出现了几次? 一般采用字典 Dict 来做。

1. 剑指offer

2. Leetcode Easy

leetcode 349: 两个数组的交集 leetcode 350: 两个数组的交集 2 leetcode 242: 有效的字母异位词
leetcode 202: 快乐数 leetcode 290: 单词规律 leetcode 205: 同构字符串
leetcode 1: 两数之和 leetcode 447: 回旋镖的数量 leetcode 219: 存在重复元素2
leetcode 217:存在重复元素

3. Leetcode Medium

leetcode 451: 根据字符出现频率排序 leetcode 15: 三数之和 leetcode 16: 最接近的三数之和
leetcode 454: 四数相加2 leetcode 49: 字母异位词分组 leetcode 220:存在重复元素3

4. Leetcode Hard

leetcode 149: 直线上最多的点数

二分查找

1. 剑指offer

2. Leetcode Easy

leetcode 704: 二分查找

回溯法

1. 剑指offer

offer 12: 矩阵中的路径 offer 13: 机器人的运动范围 offer 64: 求1+...+n

2. Leetcode Easy

leetcode 401: 二进制手表 leetcode 784: 字母大小写全排列

3. Leetcode Medium

Leetcode 17: 电话号码的字母组合 leetcode 131: 分割回文串 leetcode 45: 全排列
leetcode 47: 全排列2 leetcode 77: 组合 leetcode 39: 组合总和
leetcode 40: 组合总和2 leetcode 216:组合总和3 leetcode 78:子集
leetcode 90: 子集2 leetcode 79: 单词搜索 leetcode 200: 岛屿数量
leetcode 130: 被围绕的区域 leetcode 417: 太平洋大西洋水流问题 leetcode 207: 课程表

4. Leetcode Hard

leetcode 51: N皇后问题 leetcode 52: N皇后问题2 leetcode 37: 解数独

贪心算法

1. Leetcode Easy

leetcode 944: 删列造序 leetcode 1046: 最后一块石头的重量 leetcode 122: 买卖股票的最佳时机2

动态规划

1. 剑指 offer

斐波那契数列 青蛙跳台阶问题 变态跳台阶
矩形覆盖 剪绳子 offer 49: 丑数

2. Leetcode Easy

leetcode 1025:除数博弈 leetcode 70: 爬楼梯 leetcode 198:打家劫舍
leetcode 53

3. Leetcode Medium

leetcode 322: 零钱兑换 leetcode 120: 三角形最小路径和 leetcode 300: 最长上升子序列
leetcode 64: 最小路径和

4. Hard

leetcode 174: 地下城游戏

About

老宋秋招刷题日记, 语言使用python 与 c++

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 86.6%
  • C++ 13.3%
  • C 0.1%

AltStyle によって変換されたページ (->オリジナル) /