01 2020 档案

摘要:这是一道动态规划题目,动态规划的核心是:状态和转态转移方程。 //方法一: //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 阅读(12) 评论(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)
摘要:这个题目也是二分搜索的变体 阅读全文
posted @ 2020-01-07 22:20 repinkply 阅读(6) 评论(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 阅读(7) 评论(0) 推荐(0)
摘要://方法一,利用一个set集合的数据结构 //Time:O(n),Space:O(n) class Solution { public: int singleNumber(vector<int>& nums) { set<int> v; int sum=0,uniqueSum=0; for(int 阅读全文
posted @ 2020-01-07 14:18 repinkply 阅读(7) 评论(0) 推荐(0)
摘要://方法一,递归版 //Time::O(n),Space:O(1) class Solution { public: int Add(int num1, int num2) { return num2==0?num1:Add(num1^num2,(num1&num2)<<1); } }; //方法二 阅读全文
posted @ 2020-01-06 22:06 repinkply 阅读(3) 评论(0) 推荐(0)
摘要://Time:O(n),Space:O(n) //动态规划版本的解题方法,类比,求解第n个斐波那契数列 class Solution { public: //求解2个数中的最小数 int min(int a,int b) { return a<b?a:b; } //求解3个数中的最小数 int mi 阅读全文
posted @ 2020-01-06 16:35 repinkply 阅读(7) 评论(0) 推荐(0)
摘要://Time:O(m+n+l) m为多少个2,n为多少个3,l为多少个5,Space:O(1) class Solution { public: bool isUgly(int num) { if(num<=0) return false; while(num%2==0) num/=2; while 阅读全文
posted @ 2020-01-06 15:43 repinkply 阅读(3) 评论(0) 推荐(0)
摘要://Time: O(n),Space:O(1) //定义2个游标,也称快慢指针法 class Solution { public: int removeDuplicates(vector<int>& nums) { int p=1; if(nums.size()==0) return 0; for( 阅读全文
posted @ 2020-01-05 16:54 repinkply 阅读(2) 评论(0) 推荐(0)
摘要://Time:O(n),Space:O(n) //语言:C++11 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> res={-1,-1}; unordered_map< 阅读全文
posted @ 2020-01-05 12:46 repinkply 阅读(5) 评论(0) 推荐(0)