摘要: 一:解题思路 对于这样的题目,不能使用加(+)、减(-),从而求两数之和。连最基本的+,-都不能用,那么肯定就要想到位运算了。找到里面的规律,进而总结出一般性的结论出来。比如,来举个例子,9+11 在二进制的层面来进行运算,为什么要用9和11两个数呢?因为他们包含了相加的多种情况在里面。 二:完整代 阅读全文
posted @ 2020-03-07 17:26 repinkply 阅读(160) 评论(0) 推荐(0)
摘要: 一:解题思路 方法一:暴力破解法,Time:O(n^2),Space:O(1) 方法二:利用一个哈希表,Time:O(n),Space:O(n) 方法三:利用二分的思想。Time:O(log(n)),Space:O(1) 二:完整代码示例 (C、C++、Java、Python) 方法一C: int* 阅读全文
posted @ 2020-03-05 21:11 repinkply 阅读(295) 评论(0) 推荐(0)
摘要: 一:解题思路 方法一:暴力法。Time:O(n^2),Space:O(1) 方法二:利用一个哈希表来保存另外一个数字以及数字出现的下标。Time:O(n),Space:O(n) 二:完整代码示例 (C,C++、Java、python) 方法一C: int* twoSum(int* nums, int 阅读全文
posted @ 2020-03-05 17:03 repinkply 阅读(248) 评论(0) 推荐(0)
摘要: 一:解题思路 Time:O(n),Space:O(1) 二:完整代码示例 (C、C++、Java、Python)方法一C: bool isNumberOrCharacter(char c) { return (c>='A' && c<='Z') || (c>='a' && c<='z') || (c 阅读全文
posted @ 2020-03-05 12:17 repinkply 阅读(191) 评论(0) 推荐(0)
摘要: 这是一道动态规划题目,动态规划的核心是:状态和转态转移方程。 //方法一: //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)