leetcode

Leetcode刷题第一天

怎甘沉沦 提交于 2020-02-22 05:17:20
Leetcode第一题:两数之和   这道题目还是比较简单的,首先想到的就是暴力的破解法,直接使用两个For循环进行遍历,当找到两数相加为target时,我们就可以输出结果了。      在leetcode上还有其他的解法,比如利用hashmap等,今天晚上再来一起探讨! 来源: https://www.cnblogs.com/LazyTitan/p/11158605.html

(动态规划,状态机) leetcode 股票问题

泄露秘密 提交于 2020-02-21 11:08:58
https://leetcode.com/problems/best-time-to-buy-and-sell-stock/ 思路参考链接: https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/solution/yi-ge-fang-fa-tuan-mie-6-dao-gu-piao-wen-ti-by-lab/ 个问题的「状态」有三个,第一个是天数,第二个是允许交易的最大次数,第三个是当前的持有状态(即之前说的 rest 的状态,我们不妨用 1 表示持有,0 表示没有持有)。然后我们用一个三维数组就可以装下这几种状态的全部组合: class Solution { public: int maxProfit(vector<int>& prices) { int dp_i_0 = 0, dp_i_1 = INT_MIN; //base case for(int i=0; i<prices.size(); ++i){ dp_i_0 = max(dp_i_0, dp_i_1+prices[i]); dp_i_1 = max(dp_i_1, -prices[i]); } return dp_i_0; } }; https://leetcode.com/problems/best

五分钟自学编程:怎样才能学好笔试面试最爱考察的算法

两盒软妹~` 提交于 2020-02-21 02:59:47
原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者。 本文思维导图 什么是算法 上回我们有一篇文章,讲述了作为一个新人程序员,如何学习数据结构这门课程,其实呢,数据结构和算法是息息相关的,为什么这么说呢,因为数据结构本身只是一个载体,而在数据结构之上产生作用和输出价值的东西其实是算法。 比如数据结构里的数组,看似非常简单的数据结构,却可以支持很多复杂的算法,比如动态规划,比如DFS和BFS,再比如字符串算法、二叉树算法等等。那么算法到底是什么东西呢,不妨让我们来看看官方的介绍。 根据百度百科的介绍,算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。 其实,算法的本质就是给你一组输入,运算之后给你一组输出,因此,算法帮人们解决很多问题把抽象的问题具体化,把一个问题转化成另外一个问题。 认识算法的N个阶段 我第一次遇到算法题,还是在我考研复习数据结构的时候,那个时候我看到的算法题其实都是很基础的题目,比如把数组中的两个元素置换,把两个链表合并成一个,但对于我来说已经是很有难度的事情了,那时候我连伪代码是什么都还不懂。 第二次认识算法,还是在研究生期间找实习工作的时候

LeetCode:Best Time to Buy and Sell Stock( I & II & III & IV买股票四连)

放肆的年华 提交于 2020-02-18 05:54:46
Best Time to Buy and Sell Stock 四连题解 目录 LeetCode 121. Best Time to Buy and Sell Stock I 题目描述 样例 算法 代码 LeetCode 122. Best Time to Buy and Sell Stock II 题目描述 样例 算法 代码 LeetCode 123. Best Time to Buy and Sell Stock III 题目描述 样例 算法 代码 LeetCode 188. Best Time to Buy and Sell Stock IV 题目描述 样例 算法 代码 LeetCode 121. Best Time to Buy and Sell Stock I 题目描述 假设你有一个数组,其中第 i 个元素表示第 i 天某个股票的价格。 注意:设计一种算法以找到最大利润,你只可以完成1次交易,但必须先购买股票再出售股票 样例 输入: [7,1,5,3,6,4] 输出: 5 解释: 第二天买(price = 1),第五天卖(price=6),利润为5; 输入: [7,6,4,3,1] 输出: 0 解释: 这个例子中没有完成交易。 算法 这道题要求是 只能交易一次 ,因此就是寻找数组内正向的最大差值,解法是维护一个min变量存储当前遇到的最低股价

LeetCode 力扣 70. 爬楼梯

倾然丶 夕夏残阳落幕 提交于 2020-02-17 11:37:42
题目描述(简单难度) 爬楼梯,每次走 1 个或 2 个台阶,n 层的台阶,总共有多少种走法。 解法一 暴力解法 用递归的思路想一下,要求 n 层的台阶的走法,由于一次走 1 或 2 个台阶,所以上到第 n 个台阶之前,一定是停留在第 n - 1 个台阶上,或者 n - 2 个台阶上。所以如果用 f ( n ) 代表 n 个台阶的走法。那么, f ( n ) = f ( n - 1) + f ( n - 2 )。 f ( 1 ) = 1,f ( 2 ) = 2 。 发现个神奇的事情,这就是斐波那契数列(Fibonacci sequence)。 直接暴力一点,利用递归写出来。 public int climbStairs ( int n ) { return climbStairsN ( n ) ; } private int climbStairsN ( int n ) { if ( n == 1 ) { return 1 ; } if ( n == 2 ) { return 2 ; } return climbStairsN ( n - 1 ) + climbStairsN ( n - 2 ) ; } 时间复杂度:是一个树状图, O ( 2 n ) O(2^n) O ( 2 n ) 。 空间复杂度: 解法二 暴力解法优化 解法一很慢,leetcode 上报了超时,原因就是先求

leetcode做题记录0017

僤鯓⒐⒋嵵緔 提交于 2020-02-17 09:29:04
leetcode 0017 说明 只是为了记录一下,不求多快,也不深究。 会简要描述思路,代码中不写注释。 如碰到不会做的用了别人代码会在博客中标出。 题目描述 结果 参考 【LeetCode/算法】油管上最好的Java 版本 LeetCode逐题详解 思路 猜到了是遍历树,但是不知道怎么写了,数据结构不过关,还是要多练的,不然太菜了。 就是一个深搜。 代码 class Solution { public List < String > letterCombinations ( String digits ) { if ( digits == null || digits . length ( ) == 0 ) { return new ArrayList < String > ( ) ; } List < String > ls = new ArrayList < String > ( ) ; Map < Character , char [ ] > map = new HashMap < Character , char [ ] > ( ) ; map . put ( '2' , new char [ ] { 'a' , 'b' , 'c' } ) ; map . put ( '3' , new char [ ] { 'd' , 'e' , 'f' } ) ; map .

本周学习小结(17/02 - 23/02)

你说的曾经没有我的故事 提交于 2020-02-17 08:15:45
LeetCode 本周无进展。需要及时复习。 学习笔记之LeetCode - 浩然119 - 博客园 https://www.cnblogs.com/pegasus923/p/5528520.html Explore - LeetCode - Design https://leetcode.com/explore/interview/card/top-interview-questions-medium/112/design/ Explore - LeetCode - Math https://leetcode.com/explore/interview/card/top-interview-questions-medium/113/math/ 学习笔记之Problem Solving with Algorithms and Data Structures using Python - 浩然119 - 博客园 https://www.cnblogs.com/pegasus923/p/10454395.html C++ / Database / Git / Linux / Python / MISC 本周有进展。现在对文章选取贵精而不贵多。 学习笔记之C / C++ - 浩然119 - 博客园 https://www.cnblogs.com/pegasus923/p/10437163

【leetcode 139】单词拆分

吃可爱长大的小学妹 提交于 2020-02-17 01:37:46
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1: 输入: s = “leetcode”, wordDict = [“leet”, “code”] 输出: true 解释: 返回 true 因为 “leetcode” 可以被拆分成 “leet code”。 示例 2: 输入: s = “applepenapple”, wordDict = [“apple”, “pen”] 输出: true 解释: 返回 true 因为 “applepenapple” 可以被拆分成 “apple pen apple”。 注意你可以重复使用字典中的单词。 示例 3: 输入: s = “catsandog”, wordDict = [“cats”, “dog”, “sand”, “and”, “cat”] 输出: false 分析: 这个题的题意是 字典中的单词是否可以拼成s字符串,字典中单词可重复使用。这也就是说我们s字符串分割之后,所有的单词都必须在字典里可以找得到,但字典里的单词不一定全部都用得上。 用一个boolean类型的数组flags来记录 字符串某个位置前,是否可以由字典里的某些单词拼成。 初始flags[0]=true

LeetCode | 0435. Non-overlapping Intervals无重叠区间【Python】

时光怂恿深爱的人放手 提交于 2020-02-16 23:01:56
LeetCode 0435. Non-overlapping Intervals无重叠区间【Medium】【Python】【区间贪心】 Problem LeetCode Given a collection of intervals, find the minimum number of intervals you need to remove to make the rest of the intervals non-overlapping. Example 1: Input: [[1,2],[2,3],[3,4],[1,3]] Output: 1 Explanation: [1,3] can be removed and the rest of intervals are non-overlapping. Example 2: Input: [[1,2],[1,2],[1,2]] Output: 2 Explanation: You need to remove two [1,2] to make the rest of intervals non-overlapping. Example 3: Input: [[1,2],[2,3]] Output: 0 Explanation: You don't need to remove any of the intervals

11. Container With Most Water

£可爱£侵袭症+ 提交于 2020-02-16 21:17:12
1.题目描述 英文版: Given n non-negative integers a1, a2, ..., an , where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water. Note: You may not slant the container and n is at least 2. The above vertical lines are represented by array [1,8,6,2,5,4,8,3,7]. In this case, the max area of water (blue section) the container can contain is 49. Example: Input: [1,8,6,2,5,4,8,3,7] Output: 49 中文版: 给n个非负整数a1,a2,a3....