1.
https://leetcode-cn.com/problems/range-sum-query-2d-immutable/
然后给的模板是:
第一反应就是懵嘛,解题思路很简单:1.处理给定的matrix 2.每次输入两个角就计算输出;但是!构造函数虽然是引用传递,可以直接处理matrix,但sumRegion函数得用到这个matrix啊,现在这个NumMatrix类里面并没有matrix,那....?
思路:(先看给的注释说明)
1.主函数会创建一个对象,创建对象的时候调用构造函数,会把matrix传进去进行操作;
2.这个对象需要调用sumRegion成员函数,每次调用就输出一个值;
.....所以这个对象需要自己有一个matrix,要不然sumRegion的参数只有四个点
3.因此,在class里面建一个public对象 vector<vector<int>> new_matrix,调用构造函数的时候就把这个new_matrix填满
然后正常写就好了
2.
https://leetcode-cn.com/problems/NaqhDT/
给的模板:
题目描述:
CBTInserter(TreeNode root)
使用根节点为root
的给定树初始化该数据结构;
思考过程:
1.给定树!也就是说树已经构造好了,那么CBTInserter这个构造函数就不用去构造树了
2.既然构造函数不用构造树,思考构造函数应该干啥,也就是思考insert函数缺啥
3.insert函数应该是层序遍历这个树,找到第一个缺少孩子的节点,把改node插进去成为其孩子。但是问题是,CBTInserter这个类不用构造树,也就是这个类的对象是不含树的(当然也不含根节点),那就不能通过根节点去遍历。所以insert函数缺的是用于层序遍历的东西————显然,就是用于层序遍历的队列,并且这个队列应该是已经按照层序遍历放满节点了的
4.所以构造函数要做的就是创建这个队列,并且用层序遍历给他填满!当然,insert函数不能用队列遍历因为队列会pop,所以其实应该用vec下标来遍历,那么就是构造函数再新增一个vec并填满
5.因此,在这个类里增加两个变量:queue<TreeNode*> q; vector<TreeNode*> vec;
6.原来如此!