/Algorithm

《剑指Offer》,《程序员代码面试指南》,Leetcode等算法题目集合。基于.net core的控制台程序,C#实现,包含每道题目的完整描述,多种解法AC代码,以及解题思路,所有题目均可直接运行以查看输出结果。常用算法汇总中每个算法同样有测试用例,可运行。

Primary LanguageC#

Algorithm

《剑指Offer》,《程序员代码面试指南》,Leetcode等算法题目集合以及常用算法实现汇总

本仓库是基于 .net core 的控制台程序,C#实现,包含每道题目的完整描述,多种解法AC代码,以及解题思路,所有题目均可直接运行以查看输出结果。常用算法汇总中每个算法同样有测试用例,可运行。

目录

说明

  • 剑指Offer对应题目均可以在牛客网《剑指Offer》题库中找到(共67题)
  • 下面表格中可以跳转的是已完成的题目,无法跳转的表示还尚待补充

剑指Offer

二维数组中的查找 替换空格 从尾到头打印链表 重建二叉树
用两个栈实现队列 旋转数组的最小数字 斐波那契数列 跳台阶
变态跳台阶 矩形覆盖 二进制中1的个数 数值的整数次方
调整数组顺序使奇数位于偶数前面 链表中倒数第k个结点 反转链表 合并两个排序的链表
树的子结构 二叉树的镜像 顺时针打印矩阵 包含min函数的栈
栈的压入、弹出序列 从上往下打印二叉树 二叉搜索树的后序遍历序列 二叉树中和为某一值的路径
复杂链表的复制 二叉搜索树与双向链表 字符串的排列 数组中出现次数超过一半的数字
最小的K个数 连续子数组的最大和 整数中1出现的次数 把数组排成最小的数
丑数 第一个只出现一次的字符 数组中的逆序对 两个链表的第一个公共结点
数字在排序数组中出现的次数 二叉树的深度 平衡二叉树 数组中只出现一次的数字
和为S的连续正数序列 和为S的两个数字 左旋转字符串 翻转单词顺序列
扑克牌顺子 孩子们的游戏(圆圈中最后剩下的数) 求1+2+3+...+n 不用加减乘除做加法
把字符串转换成整数 数组中重复的数字 构建乘积数组 正则表达式匹配
表示数值的字符串 字符流中第一个不重复的字符 链表中环的入口结点 删除链表中重复的结点
二叉树的下一个结点 对称的二叉树 按之字形顺序打印二叉树 把二叉树打印成多行
序列化二叉树 二叉搜索树的第k个结点 数据流中的中位数 滑动窗口的最大值
矩阵中的路径 机器人的运动范围 剪绳子

排序算法

简单插入排序(Simple Insertion Sort)

希尔排序(Shell Sort)

冒泡排序(Bubble Sort) 快速排序(Quick Sort)
简单选择排序(Simple Selection Sort) 堆排序(Heap Sort) 归并排序(Merge Sort) 桶排序(Bucket Sort)
计数排序(Count Sort) 基数排序(Radix Sort)

经典算法

Leetcode

两数之和 寻找两个正序数组的中位数 最长回文子串 字符串转换整数 (atoi)
最长公共前缀 三数之和 最接近的三数之和 有效的括号
删除排序数组中的重复项 盛最多水的容器 字符串相乘 反转字符串
反转字符串中的单词 III 除自身以外数组的乘积 存在重复元素 螺旋矩阵
螺旋矩阵 II 合并两个有序数组 反转链表 两数相加
合并两个有序链表 合并K个排序链表 旋转链表 环形链表
环形链表 II 相交链表 删除链表中的节点 整数反转
回文数 只出现一次的数字 多数元素 2的幂
排序链表 搜索旋转排序数组 数组中的第K个最大元素 寻找二叉搜索树中第K个最小的元素
二叉树的最大深度 二叉树中的最大路径和 二叉搜索树的最近公共祖先 二叉树的最近公共祖先
括号生成 子集 全排列 格雷编码
爬楼梯 最大子序和 买卖股票的最佳时机 买卖股票的最佳时机 II
不同路径 LRU缓存机制 最小栈 Nim 游戏
字符串相加 建立四叉树 矩形重叠

程序员代码面试指南

1到n中1的出现次数 拼接所有的字符串产生字典序最小的字符串 斐波那契数列问题的递归和动态规划 斐波那契数列问题的递归和动态规划2
斐波那契数列问题的递归和动态规划3 矩阵的最小路径和 派对的最大快乐值 单调栈结构(进阶)