2020年8月4日

207. 课程表 - 8月4日

摘要: 题目 207. 课程表 我的思路 经过分析,本题似乎等价于判断一个图中是否存在环。我的朴素思路是,先把图用数据结构表示起来,然后依次对每个节点深搜,当路径长于图中的节点数时,说明存在环。 在实现上有许多地方可以改进,值得推敲。首先我在实现时是用链表表示有向图的,可以用更适合图(而非树)的邻接表来表示 阅读全文

posted @ 2020-08-04 12:32 BoysCryToo 阅读(154) 评论(0) 推荐(0) 编辑

2020年8月3日

剑指 Offer 19. 正则表达式匹配 (偏难)- 7月3日

摘要: 题目 剑指 Offer 19. 正则表达式匹配 我的思路 我的解决思路是深搜递归,可是需要注意时间复杂度,不同的深搜3^n与2^n的复杂度差别还是蛮大的。 下面结合官方题解,阐述一下两种思路: 思路一:深搜递归 时间复杂度是2^n,空间复杂度是n(可能同时存在n次递归调用层)。 class Solu 阅读全文

posted @ 2020-08-03 15:40 BoysCryToo 阅读(142) 评论(0) 推荐(0) 编辑

415. 字符串相加 - 8月3日

摘要: 题目 415. 字符串相加 我的思路 该题目比较简单。逐位遍历,计算字符对应的数字本身,相加时考虑进位即可。 C++中string类型可以直接reverse(str.begin(),str.end())进行字符串反转 我的实现 class Solution { public: string addS 阅读全文

posted @ 2020-08-03 15:17 BoysCryToo 阅读(75) 评论(0) 推荐(0) 编辑

2020年8月2日

114. 二叉树展开为链表 - 8月2日

摘要: 题目 114. 二叉树展开为链表 我的思路 本题有两个关键点:把树变为以前序方式遍历的单链表&原地算法 参考官方题解,结合自己的理解整理几种思路: 思路一: 先序遍历一遍树,把节点依次存储在一个队列中。再遍历该队列,依次把队列的下一个元素赋值给当前元素的右孩子。 时间复杂度和空间复杂度均为n(树的节 阅读全文

posted @ 2020-08-02 14:21 BoysCryToo 阅读(159) 评论(0) 推荐(0) 编辑

2020年8月1日

632. 最小区间(很有收获) - 8月1日

摘要: 题目 632. 最小区间 我的思路 这道题思路其实很简单,但要学会合理选择数据结构加快降低时间复杂度。起初我的的解决方案在最后几个比较庞大的测试用例下发生了超时的问题。 两种思路(官方题解): 思路一: 给定 k 个列表,需要找到最小区间,使得每个列表都至少有一个数在该区间中。该问题可以转化为,从 阅读全文

posted @ 2020-08-01 17:10 BoysCryToo 阅读(186) 评论(0) 推荐(0) 编辑

2020年7月31日

剑指 Offer 16. 数值的整数次方 - 7月31日

摘要: 题目 剑指 Offer 16. 数值的整数次方 我的思路 很明显,这里考的也就是“快速求幂”法。其中有二分思想。 虽然是二分法,但这里不用left和right来确定上下界,而是用幂次的2进制表示的右移操作>>以及与操作&来实现快速求幂! 套路: exponent = i0*2^0+i1*2^1+.. 阅读全文

posted @ 2020-07-31 13:33 BoysCryToo 阅读(105) 评论(0) 推荐(0) 编辑

面试题 08.03. 魔术索引 - 7月31日

摘要: 题目 我的思路 思路一是从小到大遍历有序序列,,当前元素如果小于它的下标并且下标那么继续遍历下一个元素;如果当前元素大于它的下标,那么可以直接跳到往后数第(当前元素-下标)个元素继续比较;直到匹配或者超出数组的界限。 官方题解有另一个思路,借助二分法。 每次我们选择数组的中间元素,如果当前中间元素是 阅读全文

posted @ 2020-07-31 11:41 BoysCryToo 阅读(107) 评论(0) 推荐(0) 编辑

2020年7月30日

有关重载运算符的一些思考

摘要: 重载“+”运算符后,执行a + b + c报错的原因分析: 1.所谓函数不能返回临时变量的引用,是指局部变量bai在栈空间中分配内存,函数返回du时栈指针回退,当主调函数继续调zhi用其它被调函数时,栈指针上移,上一次函数调用所分配的空间会被本次调用覆盖,如果此时再引用原来的局部变量就会出现不可预见 阅读全文

posted @ 2020-07-30 17:52 BoysCryToo 阅读(133) 评论(0) 推荐(0) 编辑

剑指 Offer 14- II. 剪绳子 II(需要取余) - 7月30日

摘要: 题目 剑指 Offer 14- II. 剪绳子 II 我的思路 循环取余or快速取余(二分思想) 我的实现 class Solution { public: long p(int num){ if(num==0) return 1; return (3*p(num-1))%1000000007; } 阅读全文

posted @ 2020-07-30 11:59 BoysCryToo 阅读(171) 评论(0) 推荐(0) 编辑

343. 整数拆分(同剑指 Offer 14- I. 剪绳子) - 7月30日

摘要: 题目 剑指 Offer 14- I. 剪绳子 我的思路 我有两种思路,首先是数学方法,证明拆分成尽量多的3和2乘积最大即可。时间复杂度1 第二是动态规划,每个整数拆分的最大乘积可以由小于它的整数拆分最大乘积决定,状态转移方程m[n]=max{m[i]*m[n-i]}, 1<i<m-1。时间复杂度n^ 阅读全文

posted @ 2020-07-30 10:57 BoysCryToo 阅读(155) 评论(0) 推荐(0) 编辑

导航