Skip to content

huang-jingwei/Coding-Interview-Guide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Coding-Interview-Guide

左程云《程序员代码面试指南》第二版编程题的Python语言实现

牛客网OJ:程序员代码面试指南

LeetCode:https://leetcode-cn.com/problemset/all/

1、故下面除特殊说明,否则OJ链接均默认为LeetCode对应题目链接。因为牛客网OJ在链表、二叉树等相关题目均把题目数据以链表数据结构给出,略掉了二叉树、链表等结构的相关信息。这样不能准确评估是否已经正确解出题目。

2、✔为已在oj上测试通过的题解.

序号 题目 OJ链接 备注
01 设计一个有getMin功能的栈 栈的最小值
02 由两个栈组成的队列 用栈实现队列
03 如何仅用递归函数和栈操作逆序一个栈 用递归函数和栈操作逆序一个栈(牛客网)
04 猫狗队列
05 用一个栈实现另一个栈的排序 栈排序
06 用栈来求解汉诺塔问题 面试题 08.06. 汉诺塔问题
07 生成窗口最大值数组 滑动窗口最大值
08 单调栈结构 单调栈结构(牛客网)
09 求最大子矩阵的大小 最大矩形
10 最大值减去最小值小于或等于num的子数组数量 最大值减去最小值小于或等于num的子数组数量(牛客网)
11 可见山峰对数量
序号 题目 OJ链接 备注
01 打印两个有序链表的公布部分 打印两个有序链表的公布部分(牛客网)
02 在单链表和双链表中删除倒数第K个节点 删除链表的倒数第N个节点
03 删除链表的中间节点和a/b处节点 删除中间节点
04 翻转单向和双向链表 反转链表
05 翻转部分单向链表 翻转部分单向链表(牛客网)
06 环形单链表的约瑟夫问题 环形单链表的约瑟夫问题(牛客网)剑指 Offer 62. 圆圈中最后剩下的数字
07 判断一个链表是否为回文结构 回文链表
08 将单向链表按某值划分为左边小、中间相等、右边大的形式 颜色分类
09 复制含有随机指针节点的链表 复杂链表的复制
10 两个单链表生成相加链表 链表求和
11 两个单链表相交的一系列问题 相交链表
12 将单链表的每K个节点之间逆序 K 个一组翻转链表
13 删除无序单链表中值重复出现的节点 删除排序链表中的重复元素
14 在单链表中删除指定值的节点 删除链表的节点
15 将搜索二叉树转换成双向链表 二叉搜索树与双向链表
16 单链表的选择排序 对链表进行插入排序
17 一种怪异的节点删除方式 删除链表的节点
18 向有序的环形单链表中插入新节点 向有序的环形单链表中插入新节点(牛客网)
19 合并两个有序的单链表 合并两个有序链表
20 按照左右半区的方式重新组合单链表 按照左右半区的方式重新组合单链表(牛客网)
序号 题目 OJ链接 备注
01 分别用递归和非递归方式实现二叉树先序、中序和后序遍历 二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历
02 二叉树的最小深度 二叉树的最小深度二叉树的最大深度
03 如何较为直观的打印二叉树
04 二叉树的序列化和反序列化 二叉树的序列化与反序列化
05 遍历二叉树的神级方法(Morris遍历) 遍历二叉树的神级方法(牛客网)
06 在二叉树中找到累加和为指定值的最长路径长度 二叉树中和为某一值的路径
07 找到二叉树中的最大搜索二叉子树 找到二叉树中的最大搜索二叉子树(牛客网) 只能过50%case
08 找到二叉树中符合搜索二叉树条件的最大拓扑结构 找到二叉树中符合搜索二叉树条件的最大拓扑结构(牛客网)
09 二叉树的按层打印和ZigZag打印 二叉树的层序遍历
10 调整搜索二叉树中两个错误的节点 恢复二叉搜索树
11 判断t1树是否包含t2树全部的拓扑结构 树的子结构
12 判断t1树是否有与t2树拓扑结构完全相同的子树 另一个树的子树
13 判断二叉树是否为平衡二叉树 平衡二叉树
14 根据后序数组重建搜索二叉树 二叉搜索树的后序遍历序列
15 判断一颗二叉树是否为搜索二叉树和完全二叉树 验证二叉搜索树二叉树的完全性检验
16 通过有序数组生成平衡搜索二叉树 将有序数组转换为二叉搜索树
17 在二叉树中找到一个节点的后继节点 后继者
18 在二叉树中找到两个节点的最近公共祖先 二叉搜索树的最近公共祖先二叉树的最近公共祖先
19 Tarjan算法与并查集解决二叉树节点间最近公共祖先的批量查询问题
20 二叉树节点间的最大距离问题 二叉树的直径
21 派对的最大快乐值
22 通过先序遍历和中序遍历生成后序数组 从中序与后序遍历序列构造二叉树根据前序和后序遍历构造二叉树
23 统计和生成所有不同的二叉树 不同的二叉搜索树不同的二叉搜索树 II
24 统计完全二叉树的节点数 完全二叉树的节点个数

备注:

1、第4题牛客网的OJ测试有问题,按照书本解法,只能过40%的case

2、第5题没做优化,

序号 题目 OJ链接 备注
01 斐波那契数列问题的递归和动态规划 斐波那契数
02 矩阵的最小路径和 最小路径和
03 换钱的最少货币数 零钱兑换
04 机器人到达指定位置方法数 机器人到达指定位置方法数(牛客)
05 换钱的方法数 零钱兑换 II
06 打气球的最大分数
07 最长递增子序列 最长递增子序列的个数
08 信封嵌套问题
09 汉诺塔问题
10 最长公共子序列问题 最长公共子序列
11 最长公共子串问题
12 子数组异或为0的最多划分
13 最小的编辑代价
14 字符串的交错组成
15 龙与地下城游戏问题 地下城游戏
16 数字字符串转换为字母组合的种数
17 表达式得到期望结果的组成种数
18 排成一条线的纸牌博弈问题
19 跳跃游戏 跳跃游戏跳跃游戏 II
20 数组中最长连续序列 最长连续序列
21 N皇后问题
序号 题目 OJ链接 备注
01 判断两个字符串是否互为变形词 判断两个字符串是否互为变形词(牛客)
02 判断两个字符串是否互为旋转词 判断两个字符串是否互为旋转词(牛客)
03 将整数字符串转成整数值
04 字符串的统计字符串
05 判断字符串数组中是否所有的字符都只出现过一次 牛客网和LeetCode OJ均找不到这个题目
06 在有序但含有空的数组中查找字符串 在有序但含有空的数组中查找字符串(牛客网)
07 字符串的调整与替换 替换空格
08 翻转字符串 翻转单词顺序
09 完美洗牌问题
10 删除多余字符得到字典序最小的字符串
11 数组中两个字符串的最小距离
12 字符串的转换路径问题
13 添加最少字符使字符串整体都是回文字符串 让字符串成为回文串的最少插入次数
14 括号字符串的有效性和最长有效长度
15 公式字符串求值
16 0左边必有1的二进制字符串数量
17 拼接所有字符串产生字典顺序最小的大写字符串
18 找到字符串的最长无重复字符子串 最长不含重复字符的子字符串
19 找到指定的新类型字符
20 旋变字符串问题
21 最小包含子串的长度 最小覆盖子串
22 回文最少分割数
23 字符串匹配问题
24 字典树(前缀树)的实现 实现 Trie (前缀树)
25 子数组的最大异或和 子数组最大异或和(牛客网)数组中两个数的最大异或值

第5题还没做完,第6题的进阶问题还没做完。

序号 题目 OJ链接 备注
01 转圈打印矩阵 顺时针打印矩阵
02 将正方形矩阵顺时针转动90° 旋转矩阵
03 ”之“字型打印矩阵 对角线遍历
04 找到无序数组中最小的k个数 最小的k个数
05 需要排序的最短子数组长度 最短无序连续子数组
06 在数组中找到出现次数大于N/K的数 数组中出现次数超过一半的数字求众数 II
07 在行列都排好序的矩阵中找指定数 二维数组中的查找
08 最长的可整合子数组的长度
09 不重复打印排序数组中相加和为给定值得所有二元组和三元组 和为s的两个数字
10 未排序正数组中累加和为给定值的最长子数组长度 未排序正数组中累加和为给定值的最长子数组长度(牛客网)
11 未排序数组中累加和为给定值的最长子数组系列问题
12 未排序数组中累加小于或等于给定值的最长子数组长度
13 计算数组的小和
14 自然数数组的排序
15 奇数下标都是奇数或偶数下标都是偶数 奇数下标都是奇数或偶数下标都是偶数(牛客网)
16 子数组的最大累加和问题 连续子数组的最大和
17 子矩阵的最大累加和问题
18 在数组中找到一个局部最小的位置
19 数组中子数组的最大累乘积 乘积最大子数组
20 打印N个数组整体最大的Top K 最小的k个数
21 边界都是1的最大正方形大小
22 不包含本位置的累乘数组 构建乘积数组
23 数组的partition调整
24 求最短通路值
25 数组中未出现的最小正整数 缺失的第一个正数
26 数组排序之后相邻数的最大差值 最大间距
27 做项目的最大收益问题 IPO(备注:思路没问题,但是会超出时间限制,还得进一步优化)
28 分金条的最小花费
29 大楼轮廓问题
30 加油站良好出发点问题
31 容器盛水问题
序号 题目 OJ链接 备注
01 从5随机到7随机及其扩展
02 一行代码求两个数的公约数
03 有关阶乘的两个问题
04 判断一个点是否在矩形内部
05 判断一个点是否在三角形内部
06 折纸问题
07 能否完美地拼成矩形
08 蓄水池问题
09 设计有setAll功能的哈希表
11 最大的leftMax与rightMax之差的绝对值 最大的leftMax与rightMax之差的绝对值(牛客网)
12 设计LRU缓存结构 LRU缓存机制
13 LFU缓存结构设计
14 设计RamdomPool结构 常数时间插入、删除和获取随机元素O(1) 时间插入、删除和获取随机元素 - 允许重复
15 并查集的实现 岛屿数量
16 调整[0,x)区间上的数出现的概率
17 路径数组变为统计数组
18 正数数组的最小不可组成和
19 累加出整个范围所有的数最少还需几个数
20 一种字符串和数字的对应关系
21 1到n中1出现的次数 1~n 整数中 1 出现的次数
22 从N个数中等概率打印M个数
23 判断一个数是否是回文数 回文数
24 在有序旋转数组中找到最小值 寻找旋转排序数组中的最小值 II
25 在有序旋转数组中找到一个数 搜索旋转排序数组
26 数字的英文表达和正文表达
27 分糖果问题
28 一种消息接收并打印的结构设计
29 随时找到数据流的中位数 数据流的中位数
30 在两个长度相等的排序数组中找到中位数 寻找两个正序数组的中位数
31 在两个排序数组中找到第k小的数 在LeetCode里面,30和31题都是同样一道题目
32 两个有序数组间相加和的Top k问题
33 出现次数的Top k问题 前 K 个高频元素
34 Manacher算法
35 KMP算法
36 丢棋子问题
37 画匠问题
38 邮局选址问题

About

Python语言实现左程云《程序员代码面试指南》第二版

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages