随笔分类 -  # 经典算法题目

摘要:这是一道动态规划题目,动态规划的核心是:状态和转态转移方程。 //方法一: //Time:O(n),Space:O(n) class Solution { public: int max(int a,int b) { return a>b?a:b; } int rob(vector<int>& nu 阅读全文
posted @ 2020-01-11 16:55 repinkply 阅读(7) 评论(0) 推荐(0)
摘要://方法一:递归版 //Time:O(2^n),Space:O(n) class Solution { public: int climbStairs(int n) { if(n==0) { return 1; } else if(n==1) { return 1; } else { return 阅读全文
posted @ 2020-01-11 13:28 repinkply 阅读(3) 评论(0) 推荐(0)
摘要:这道题目的解题方法有很多,我们来介绍几种方法。 //方法一,递归版,是一种最常见的解题方法,没有任何的优化,里面存在大量的重复计算 //时间复杂度较高,实际上是一颗递归树,当N>42时,需要的时间是很久的,在实际的工程开发中 //是不可以忍受的,那么有没有可以优化的办法呢?当然有的,我们看第二种办法 阅读全文
posted @ 2020-01-11 13:18 repinkply 阅读(14) 评论(0) 推荐(0)
摘要:这道题属于属于动态规划中比较简单的一道题目。 //Time:O(n),Space:O(1) class Solution { public: int max(int a,int b) { return a>b?a:b; } int maxSubArray(vector<int>& nums) { i 阅读全文
posted @ 2020-01-11 11:37 repinkply 阅读(5) 评论(0) 推荐(0)
摘要://方法一:暴力破解法,使用2重循环来解决,这种方法时间复杂度较高 //Time:O(n^2),Space:O(1) //语言:经典C++ class Solution { public: int max(int a,int b) { return a>b?a:b; } int maxProfit( 阅读全文
posted @ 2020-01-10 21:41 repinkply 阅读(8) 评论(0) 推荐(0)
摘要:这个题目是二分搜索的变形题。 当然这个题目,可以利用遍历一遍数组来求解,但是时间复杂度就是O(n)了。这里我们用变体二分搜索的解法来求解这个题目。 //Time:O(log(n)),Space:O(1) class Solution { public: int findMin(vector<int> 阅读全文
posted @ 2020-01-07 21:53 repinkply 阅读(8) 评论(0) 推荐(0)
摘要://方法一:利用二分搜索法来做 //Time:O(log(n)),Space:O(1) class Solution { public: int mySqrt(int x) { int begin=0; int end=x; while(begin<=end) { long mid=begin+(( 阅读全文
posted @ 2020-01-07 19:10 repinkply 阅读(8) 评论(0) 推荐(0)