Home

Awesome

AlgorithmicPractice

本篇是关于LeetCode算法练习的总结(题目主要来源于剑指offer),内容划分为以下章节:

注:
main.cpp展示测试效果;

一.基础数据结构

1.1 字符串

序号题目(解答链接)LeetCode(原题链接)
1Implement strStr()实现 strStr()
2Reverse String反转字符串
3Reverse Words in a String翻转字符串里的单词
4String to Integer (atoi)字符串转换整数 (atoi)
5First Unique Character in a String字符串中的第一个唯一字符
6Add Binary二进制求和
7Longest Substring Without Repeating Characters无重复字符的最长子串
8II. Left rotate stringII. 左旋转字符串
9Rotate String旋转字符串
10Replace spaces替换空格

1.2 数组

序号题目(解答链接)LeetCode(原题链接)
1Remove Duplicates from Sorted Array删除排序数组中的重复项
2Median of Two Sorted Arrays寻找两个正序数组的中位数
3Merge Sorted Array合并两个有序数组
43sum三数之和
5Majority Element多数元素
6Search A 2d Matrix Ⅱ搜索二维矩阵 II
7Find First And Last Position Of Element In Sorted Array在排序数组中查找元素的第一个和最后一个位置
8Spiral Matrix螺旋矩阵

二.链表

序号题目(解答链接)LeetCode(原题链接)
1Reverse Linked List反转链表
2Add Two Numbers两数相加
3Linked List Cycle环形链表
4Merge Two Sorted Lists合并两个有序链表
5Remove Nth Node From End of List删除链表的倒数第N个节点
6Middle of the Linked List链表的中间结点
7Design Linked List设计链表
8Delete The Node Of The Linked List删除链表的节点
9The K-th Last Node In The Linked List链表中倒数第k个节点
10Intersection Of Two Linked Lists相交链表
11Copy List With Random Pointer复制带随机指针的链表
12reverse nodes in k groupK 个一组翻转链表

三.栈和队列

序号题目(解答链接)LeetCode(原题链接)
1Valid Parentheses有效的括号
2Longest Valid Parentheses最长有效括号
3Evaluate Reverse Polish Notation逆波兰表达式求值
4Design Circular Deque设计循环双端队列
5Implement queue with two stacks用两个栈实现队列
6Min Stack最小栈
7Validate Stack Sequences验证栈序列

四.二叉树

序号题目(解答链接)LeetCode(原题链接)
1Maximum Depth of Binary Tree二叉树的最大深度
2Invert Binary Tree翻转二叉树
3Balanced Binary Tree平衡二叉树
4Symmetric Tree对称二叉树
5Same Tree相同的树
6Binary Tree Preorder Traversal二叉树的前序遍历
7Binary Tree Inorder Traversal二叉树的中序遍历
8Binary Tree Postorder Traversal二叉树的后序遍历
9Binary Tree Level Order Traversal II二叉树的层次遍历
10Balidate Binary Search Tree验证二叉搜索树(BST)
11Path Sum路径总和
12Path Sum II路径总和 II
13Tree substructure树的子结构
14Lowest Common Ancestor Of A Binary Tree二叉树的最近公共祖先
15The k-th largest node of the binary search tree二叉搜索树的第k大节点
16Serialize And Deserialize Binary Tree二叉树的序列化与反序列化
17Postorder traversal sequence of binary search tree二叉搜索树的后序遍历序列
18check completeness of a binary tree二叉树的完全性检验
19diameter of binary tree二叉树的直径

五.排序

5.1 排序

序号题目(解答链接)LeetCode(原题链接)
1Kth Largest Element in an Array数组中的第K个最大元素
2Sort List排序链表
3Reverse pair in array数组中的逆序对

5.2 排序算法

序号排序(示例链接)
1冒泡排序
2选择排序
3插入排序
4希尔排序
5快速排序
6归并排序
7堆排序

六.二分查找

序号题目(解答链接)LeetCode(原题链接)
1Sqrt(x)x 的平方根
2Numbers missing from 0 to n-10~n-1中缺失的数字
3Find Minimum In Rotated Sorted Array寻找旋转排序数组中的最小值
4Find First and Last Position of Element in Sorted Array在排序数组中查找元素的第一个和最后一个位置 II

七.动态规划

序号题目(解答链接)LeetCode(原题链接)
1Climbing Stairs爬楼梯
2Unique Paths不同路径
3Maximum Subarray最大子序和
4Best Time to Buy and Sell Stock买卖股票的最佳时机
5The greatest value of gifts礼物的最大价值
6Word Search单词搜索
7Integer Break整数拆分
8Regular Expression Matching正则表达式匹配
9n dice pointsn个骰子的点数

八.哈希表

序号题目(解答链接)LeetCode(原题链接)
1Two Sum两数之和
2The first character that appears only once第一个只出现一次的字符
3Repeating numbers in the array数组中重复的数字

九.其他

9.1 滑动窗口

序号题目(解答链接)LeetCode(原题链接)
1Sliding Window Maximum滑动窗口最大值
2The maximum value of the queue队列的最大值
3And is a sequence of consecutive positive Numbers for S和为s的连续正数序列

9.2 递归

序号题目(解答链接)LeetCode(原题链接)
1Fibonacci Number斐波那契数
2Construct Binary Tree From Preorder And Inorder Traversal从前序与中序遍历序列构造二叉树
3Powx NPow(x, n)

9.3 回朔算法

序号题目(解答链接)LeetCode(原题链接)
1Arrangement of strings字符串的排列
2Robot's range of motion机器人的运动范围

9.4 分治算法

序号题目(解答链接)LeetCode(原题链接)
1The smallest k number最小的k个数
2Majority Element多数元素
3convert binary search tree to sorted doubly linked list二叉搜索树与双向链表

9.5 堆

序号题目(解答链接)LeetCode(原题链接)
1Find Median From Data Stream数据流的中位数

十.数学

10.1 位运算

序号题目(解答链接)LeetCode(原题链接)
1Number Of 1 Bits位1的个数
2No addition, subtraction, multiplication and division不用加减乘除做加法
3Number of occurrences of numbers in the array数组中数字出现的次数
4Number of occurrences of numbers in the array II数组中数字出现的次数 II

10.2 其他

序号题目(解答链接)LeetCode(原题链接)
1Valid Number有效数字
2Nth Digit第N个数字
3Print n digits from 1 to maximum打印从1到最大的n位数
4Ugly Number II丑数 II
5Number Of Digit One数字 1 的个数
6Adjust the array order so that odd numbers are in front of even numbers调整数组顺序使奇数位于偶数前面
7Find 1+2+...+n求1+2+…+n
8And two numbers for s和为s的两个数字
9The last number left in the circle圆圈中最后剩下的数字
10Straight in playing cards扑克牌中的顺子
11Translate numbers into strings把数字翻译成字符串
12Build product array构建乘积数组
13LRU CacheLRU缓存
14LFU CacheLFU缓存
15Largest rectangle in histogram柱状图中最大的矩形

热门题型练习

序号LeetCode(题目链接)备注题解
1反转链表
2二叉树的最近公共祖先-2
3环形链表 II-1
4最大子序和-2
5合并两个有序链表
6数组中的第K个最大元素
7二叉树的前序遍历1
8K个一组翻转链表:2
9用两个栈实现队列-1
10相交链表-2
11LRU缓存机制-2
12买卖股票的最佳时机:1
13二叉树的完全性检验:2
14反转字符串
15二叉树的层次遍历
16二叉树的直径-2
17翻转二叉树-1
18两数之和-1
19无重复字符的最长子串-1
20分隔链表-2题解
21旋转数组-1题解
22路径总和 II-1
23翻转字符串里的单词-1
24字符串解码-2题解
25爬楼梯-1
26螺旋矩阵-1
27LFU缓存-2
28x 的平方根-1题解
29零钱兑换-2题解

知识点

1. 算法知识

TODO:

2. 算法问题处理
3. 算法知识收藏

附:

  1. 性能对比图

性能对比图

  1. 十大排序算法比较图

十大排序算法比较图

  1. 算法知识体系图

算法知识体系图

  1. 常用算法时间复杂度

Common Data Structure Operations