上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 20 下一页
摘要: 由于只能交易一次,即买入卖出一次,所以我们考虑在某个价值较低的某天买入,在之后的某个价值较高的一天卖出,以获取最高的差价利润。 最简单的想法是枚举所有天数,然后枚举某天之后的所有天数,更新能够获取到的最高利润。 这样做需要两重循环,时间复杂度是O(n^2),超时。 我们可以边枚举天数边记录当前的最低 阅读全文
posted @ 2020-08-08 12:31 machine_gun_lin 阅读(160) 评论(0) 推荐(0)
摘要: 状态机dp,参考labuladong的题解 首先考虑状态表示,这题有三种状态,天数、当前进行的最大交易次数,以及当前是否持有股票。所以我们可以用dp[i][k][0或1]表示:当前是第i天(i从0开始),当前允许的最大交易次数为k(这里我们认为交易次数是买入股票的次数),0表示当前不持有股票,1表示 阅读全文
posted @ 2020-08-08 11:16 machine_gun_lin 阅读(245) 评论(0) 推荐(0)
摘要: 题意是寻找一个无序数组排序之后的相邻元素的最大差值。直观的思路是对数组进行排序,然后再在排序后的数组里寻找相邻元素的最大差值。 由于题目要求时间复杂度为O(n),所以我们不能用快速排序,而是用时间复杂度为O(n),空间开销较大的桶排序。 关于桶排序,可以参考这篇博客。 基本思想就是,我们先遍历一遍数 阅读全文
posted @ 2020-08-07 10:49 machine_gun_lin 阅读(178) 评论(0) 推荐(0)
摘要: 要判断是否会出现无限循环小数,就需要找循环节。 如果出现了循环节,会出现这样一种情况:被除数除以除数的商,在之前已经出现过了,比如2 / 3,2比3小,借位,20 / 3 = 6 ... 2, 然后商又是6,6在之前出现过了,所以我们知道循环节就是6。 最终结果就是0.(6)。 要记录之前已经出现过 阅读全文
posted @ 2020-08-06 12:45 machine_gun_lin 阅读(106) 评论(0) 推荐(0)
摘要: 根据题意,用'.'划分出两个版本的每个子版本号,从左到右逐个比较即可,如果某个版本的子版本号个数比另一个多,则子版本较少的那个版本用0表示子版本,这样就可以一直比较两个版本的所有子版本了。 划分子版本可以用双指针,划分出的子版本存到一个数组中,都划分好后就得到两个分别存放两个版本的子版本的数组,然后 阅读全文
posted @ 2020-08-06 11:54 machine_gun_lin 阅读(184) 评论(0) 推荐(0)
摘要: 可以利用栈的性质,遍历链表,把节点存入栈中,然后一个一个弹栈,连接成新链表。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : v 阅读全文
posted @ 2020-08-04 22:27 machine_gun_lin 阅读(56) 评论(0) 推荐(0)
摘要: 既然同一个字符如果要替换,就都得替换成相同的字符,我们可以开哈希表记录某个字符映射成了哪个别的字符,但是由于两个字符不能映射到相同的字符上,如果a映射成o,r也映射成o,那么bar就可以替换成foo了,这是不符合题意的。 我们注意到,如果我们对foo也建立一个哈希表,那么o只能映射成一个字符,foo 阅读全文
posted @ 2020-08-04 19:28 machine_gun_lin 阅读(76) 评论(0) 推荐(0)
摘要: 暴力计算所有小于n的数中的素数个数。 class Solution { public: bool isPrime(int n) { if(n == 2) { return true; } for(int i = 2; i * i <= n; ++i) { if(n % i == 0) { retur 阅读全文
posted @ 2020-08-04 18:52 machine_gun_lin 阅读(97) 评论(0) 推荐(0)
摘要: 链表的“删除”,往往采用的是跳过的方式,即如果p → next是我们要“删除”的节点,我们只要把p的next指针指向p → next → next就可以了,也就是让链表跳过p → next,让这个节点“社会性死亡”。 根据这个思路,这一题里我们只需要遍历链表,判断节点值是否与我们要删除的相等,如果相 阅读全文
posted @ 2020-08-04 18:10 machine_gun_lin 阅读(71) 评论(0) 推荐(0)
摘要: 按照题目说的规则,不是快乐数的数,会陷入无限循环,永远得不到1,比如18,在第4次迭代的时候计算出来的n是58,在第12次迭代之后n的值还是58,所以就陷入了无限循环之中,所以18不是快乐数。 因此,我们可以用一个set,对于每一次迭代就算出来的n,都先去判断set中是否已经存在这个值了,如果已经存 阅读全文
posted @ 2020-08-04 17:48 machine_gun_lin 阅读(109) 评论(0) 推荐(0)
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 20 下一页