leetcode_0920

[原题链接: https://leetcode-cn.com/problems/subsets/]

思考过程

     这种回溯类的题目都要写吐了,组合的问题其实也和之前大同小异,这里也可以按照一定顺序,对每一位进行选择与否,然后编写递归函数即可,返回条件应该是长度达到了n,这里的n指的是虚拟的长度,也就是是说,不选择的时候也算一步。
     当然这道题用动态规划也是可以写的,但是总感觉vector拷贝会花不少时间,而且也不能在循环过程中改变vector的大小,这样会导致迭代器失效。
     最后还有一种方法就是按二进制位标示选取与否,从全0到全1,一次push到答案中。

阅读更多

leetcode_0919

原题链接: 左叶子之和

思考过程

     树本身就是一个与递归概念联系紧密的数据结构,所以一般遇到这种问题都可以用递归的方法来解决,不过刚开始没有理清题意,还以为求的是最左边的子节点,结果WA了两次。明白了题意之后在普通dfs之上添加一个参数用于标识是左子节点还是右子节点即可。

阅读更多

9月17日leetcod每日一题

原题链接: 冗余连接

思考过程

     这道题其实在七月的每日一题中已经出现,当时也是一次就自己写出来了。这次的思路和上次的差不太多,算是利用一点并查集的思想,将每个点父节点存储到一个数组之中,正常情况下,除了根节点没有父节点之外,其他节点有且只有一个父节点,但是多添加一条边之后,可能出现两种情况。

阅读更多

9月16号leetcode每日一题

原题链接: 翻转二叉树

思考过程

     虽然这道题属于那种有手就行的,但是将核心递归函数融合在返回主函数中还是比较巧妙的,要翻转这个树,就先翻转他的左右子树,之后在把两边指针进行交换。递归边界就是遇到root为空。虽然简单,但是题目还是比较典型的。

阅读更多

9月15号leetcode每日一题

原题链接

思考过程

     说实话,这道题还是有一定的思考量的,刚开始想的是建立每行每列以及每个cell,之后就是把空的点push到一个队列里面,如果当前点可以进行填写(意思就是说其他8个数已经确定),就将节点pop出去,如果不能进行填写,pop出去之后就再push进入队尾。

阅读更多

面试复盘(联合索引)

preface

     今天一面感觉还算比较典型,面试官也没有为难的意思,问的题目大多都比较典型,主要类型是数据库和网络,然后问到了一个联合索引的问题。
     大致意思是在a,b,c三个列上建立联合索引,然后问

1
2
SELECT * FROM users 
WHERE a>A AND b>B;

     这个查询语句是否会经过索引。

阅读更多

9月14号leetcode每日一题

思考过程

     很经典的题目,对于熟练一定的模板还是很有作用的,但刚开始的时候并没有看清楚题目,差点写成了前序遍历,这里就纯当练手了吧,做过太多遍了。。。

阅读更多

9月13号leetcode每日一题

思考过程

     这道题一开始肯定想的是使用dfs,外加bool型数组记录是否被选取,但是发现我自己原来写的并没有剪枝,但是时间效率还不错…看了题解,发现也是简单dfs加回溯。。。无语,那就这样写吧,这样的话感觉这道题就没有什么意义了,纯粹考察熟练度。

阅读更多

9月12号leetcodeme每日一题

思考过程

     这道题就没有什么好说的,经典层序遍历,记录每层的一个size值即可。没有什么价值可言…(就随便贴一下代码好了233)

阅读更多