『LeetCode题解』
Leetcode上各种类型的题以及解法以及分享平时算法的学习
老陈聊架构
系统架构师、华为云享专家、阿里云专家、CSDN专家、MongoDB中文社区成员、《现代计算机(专业版)》期刊作者,专注于后端架构领域。
展开
-
编程内功修炼之分治算法——最大子数组问题详解
分治算法 - 最大子数组问题分治策略是:对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。这种算法设计策略叫做分治法。简单来说就是把一个大问题分成多个小问题去解决。采用递归的方式。股票问题如上图,求解在哪天买入以及哪天卖出能赚到最多...原创 2019-02-27 15:38:41 · 456 阅读 · 0 评论 -
Leetcod-455_Assign Cookies (分饼干)-贪心算法-【C++】
455. Assign CookiesAssume you are an awesome parent and want to give your children some cookies. But, you should give each child at most one cookie. Each child i has a greed factor gi, which is th...原创 2018-03-28 22:11:55 · 840 阅读 · 0 评论 -
Leetcod-300_最长上升子序列LIS-基础动态规划问题-【C++】
Leetcode_300,最长上升子序列给出一个无序的整形数组,找到最长上升子序列的长度。例如,给出 [10, 9, 2, 5, 3, 7, 101, 18],最长的上升子序列是[2, 3, 7, 101],因此它的长度是4。因为可能会有超过一种的最长上升子序列的组合,因此你只需要输出对应的长度即可。你的算法的时间复杂度应该在 O(n2) 之内。进阶...原创 2018-03-29 10:58:48 · 468 阅读 · 0 评论 -
最长公共子序列LCS-基础动态规划问题-【C++】
最长公共子序列LCS最长公共子序列也称作最长公共子串(不要求连续),英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。输入 第一行给出一个整数N(0< N< 100)表示待测数据组数 接下来每组数据两行,分别为待测...原创 2018-03-29 12:33:11 · 384 阅读 · 0 评论 -
Leetcod-435_Non-overlapping Intervals(非重叠间隔)-动态规划解-【C++】
435.非重叠间隔给定时间间隔集合,找到您需要删除的最小时间间隔数量,以使其余时间间隔不重叠。注意:你可以假设间隔的终点始终大于其起始点。像[1,2]和[2,3]这样的间隔具有“接触”的边界,但它们并不相互重叠。例1: 输入: [[1,2],[2,3],[3,4],[1,3]] 输出: 1 说明:可以删除[1,3],其余的时间间隔不重叠。例2:...原创 2018-03-29 16:02:05 · 844 阅读 · 0 评论 -
Leetcode-198_ House Robber-典型动态规划-【C++】
198. House RobberYou are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them i...原创 2018-03-21 21:48:56 · 462 阅读 · 0 评论 -
Leetcode-77_ Combinations(组合)-深搜解法-【C++】
77. CombinationsGiven two integers n and k, return all possible combinations of k numbers out of 1 … n.For example,If n = 4 and k = 2, a solution is:[ [2,4], [3,4], [2,3], [1,2],...原创 2018-03-21 21:56:41 · 1028 阅读 · 0 评论 -
Leetcode-79_Word Searchr-典型深搜题-【C++】
79. Word SearchGiven a 2D board and a word, find if the word exists in the grid.The word can be constructed from letters of sequentially adjacent cell, where “adjacent” cells are those horizon...原创 2018-03-21 22:09:42 · 1053 阅读 · 0 评论 -
Leetcode-200_ Number of Islands-Floodfill算法原型题-【C++】
200. Number of IslandsGiven a 2d grid map of ‘1’s (land) and ‘0’s (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or ...原创 2018-03-21 22:16:35 · 479 阅读 · 0 评论 -
Leetcod-46_Permutations-全排列秒解-【C++】
46. PermutationsGiven a collection of distinct numbers, return all possible permutations.For example,[1,2,3]have the following permutations:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1]...原创 2018-03-15 12:42:50 · 329 阅读 · 0 评论 -
Leetcod-47_PermutationsII-全排列秒解-【C++】
47. Permutations IIGiven a collection of numbers that might contain duplicates, return all possible unique permutations.For example,[1,1,2]have the following unique permutations:[ [1,1...原创 2018-03-15 12:46:37 · 351 阅读 · 0 评论 -
Leetcod-60_Permutation Sequence-全排列秒解-【C++】
60. Permutation SequenceThe set [1,2,3,…,n] contains a total of n! unique permutations.By listing and labeling all of the permutations in order,We get the following sequence (ie, for n = 3...原创 2018-03-15 12:53:21 · 394 阅读 · 0 评论 -
Leetcod-17_ Letter Combinations of a Phone Number-回溯法-【C++】
17. Letter Combinations of a Phone NumberGiven a digit string, return all possible letter combinations that the number could represent.A mapping of digit to letters (just like on the telephone...原创 2018-03-14 22:47:55 · 238 阅读 · 0 评论 -
Leetcod-220_Contains Duplicate III-滚动滑块解法-【C++】
220. Contains Duplicate IIIGiven an array of integers, find out whether there are two distinct indices i and j in the array such that the absolute difference between nums[i] and nums[j] is at most...原创 2018-03-12 17:04:00 · 274 阅读 · 0 评论 -
Leetcod-219_Contains Duplicate II-滚动滑块解法-【C++】
219. Contains Duplicate IIGiven an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the absolute difference ...原创 2018-03-12 16:16:33 · 222 阅读 · 0 评论 -
Leetcod-217_Contains Duplicate-简单解法-【C++】
217. Contains DuplicateGiven an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should retur...原创 2018-03-12 16:26:42 · 269 阅读 · 0 评论 -
Leetcod-01_Two Sum(两数和)-并查集解法-【C++】
1. Two SumGiven an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may n...原创 2018-03-09 16:23:53 · 281 阅读 · 0 评论 -
Leetcode-279_Perfect Squares(完美广场)-动态规划、数学、广度优先遍历-【C++】
Leetcode-279Perfect Squares(完美广场)Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, …) which sum to n.For example, given n = 12, return 3 be...原创 2018-02-09 11:51:44 · 2192 阅读 · 0 评论 -
Leetcode-343_Integer Break(整数分解) -动态规划解法-Leetcode大神解法-【C++】
Leetcode-343Integer Break(整数分解)Given a positive integer n, break it into the sum of at least two positive integers and maximize the product of those integers. Return the maximum product you can ge...原创 2018-02-08 17:51:41 · 1050 阅读 · 0 评论 -
斐波那契数列的记忆化搜索与动态规划解法 C++实现 以及相关案例分析(Leetcode70—爬楼梯)
斐波那契数列的记忆化搜索与动态规划解法 C++实现 以及相关案例分析(Leetcode70—爬楼梯)Fibonacci数列的递推解析式:F(n)=F(n-1)+F(n-2)普通无优化的解法#include #include using namespace std;int num=0;int Fibonacci(int n){ num++; if(原创 2018-02-06 10:51:48 · 3111 阅读 · 0 评论 -
Leetcode-120_Triangle(三角形)—动态规划解法+记忆化搜索解法-【C++】
Leetcode 120. Triangle(三角形)Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.For example, given the following triangle...原创 2018-02-06 17:00:10 · 519 阅读 · 0 评论 -
Leetcode-64_. Minimum Path Sum(最小路径和)—动态规划解法+记忆化搜索解法-C++解
Leetcode 64. Minimum Path Sum(最小路径和)Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.Note: You...原创 2018-02-07 01:39:17 · 498 阅读 · 0 评论 -
Fibonacci数列的递推C语言详解:Fn=Fn-1+Fn-2
Fibonacci数列的递推C语言详解:Fn=Fn-1+Fn-21. 求Fn除以10007的余数#include #define M 10007 int main() { int a1,a2; a1=a2=1; int temp; //temp作为数据交换的中介 long n; //因为n>=1 a原创 2018-01-16 11:23:14 · 14576 阅读 · 0 评论 -
O(n^2)的排序算法
O(n^2)的排序算法O(n^2)是比较基础的排序算法,效率较低,编码简答,易于实现,是一些简单情景的首选。在一些特殊的情况下,简单的排序算法更有效简单的排序算法思想衍生出复杂的排序算法作为子过程,改进更复杂的排序算法选择排序 Selection Sort需要将下列数从小到大排列从第一个开始排,找到比第一个(8)后面最小的数,是1然后将其交换位...原创 2018-01-13 11:22:06 · 3117 阅读 · 0 评论 -
C++_STL—较为常用的算法
C++_STL—较为常用的算法一、非变异算法是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。非变异算法具有极为广泛的适用性,基本上可应用与各种容器。1.查找容器元素找到它用于查找等于某值的元素。它在迭代器区间[first,last)(闭开区间)上查找等于value值的元素,如果迭代器i所指的元素满足*i=value,则返回迭代器...转载 2018-01-11 16:20:52 · 463 阅读 · 0 评论 -
C++_STL—算法Algorithm篇
C++_STL—算法Algorithm篇STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成。要使用 STL中的算法函数必须包含头文件<algorithm>,对于数值算法须包含<numeric>,<functional>中则定义了一些模板类,用来声明函数对象。头文...原创 2018-01-11 15:17:47 · 735 阅读 · 0 评论 -
C++_STL—Set及Multiset篇
C++_STL—Set/Multiset篇set和multiset 会根据特定的排序准则,自动将元素排序。两者不同之处,在于multiset允许元素重复,而set不允许重复,如图1所示。 1. 构造函数和析构函数set<int> c:创建空集合,不包含任何元素set<int> c(op):以op为排序准则,产生一个空的setse<int>...原创 2018-03-06 22:40:59 · 428 阅读 · 0 评论 -
C++_STL—容器deque篇
C++_STL—容器deque篇deque与vector十分相似,近乎一模一样,只不过deque可以从开头以及末尾添加删除元素,而vector只能从末尾添加删除元素。容器的使用头文件引用: #include < deque> using namespace std;deque的定义和初始化 deque<int> de...原创 2018-02-24 14:06:31 · 376 阅读 · 0 评论 -
C++_STL—容器Map篇
C++_STL—容器Map篇C++中map容器提供一个键值对(key/value)容器,map与multimap差别仅仅在于multiple允许一个键对应多个值。需要包含头文件map。对于迭代器来说,可以修改实值,而不能修改key。Map会根据key自动排序。容器的使用头文件引用: #include <map> using namespace std;...原创 2018-01-11 14:48:06 · 284 阅读 · 0 评论 -
C++_STL—容器List篇
C++_STL—容器List篇List是stl实现的双向链表,与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢。需要添加头文件list容器的使用头文件引用: #include <list> using namespace std;List的定义和初始化 list<int> lst1; ...原创 2018-01-11 14:10:03 · 293 阅读 · 0 评论 -
C++_STL—容器Vector篇
C++_STL—容器Vector篇最简单的 STL 容器就是 vector。Vector 只是一个拥有扩展功能的数组。顺便说一下,vector 是唯一向后兼容 C 代码的容器——这意味着 vector 实际上就是数组 ,只是拥有一些额外特性。容器的使用头文件引用: #include <vector> using namespace std;...原创 2018-01-11 11:37:44 · 361 阅读 · 0 评论