LeetCode-690. Employee Importance

Description:

这里写图片描述

Example 1:

这里写图片描述

Note:

这里写图片描述

Solution 1(C++)

这里写图片描述

算法分析:

这道题明白题目意思就挺好的做。算法过程就是:
根据id找到id相同的Employee,获得其中的importance,然后获得subordinates,遍历其中的id,重复之前的过程。
所以,关键是程序的迭代的实现。

程序分析:

这个题的程序设计,我觉得还是蛮有技巧的。因为首先题目给出的函数本身就可以当一个迭代的函数。然后注意sum初始化为0并没有问题,因为这个函数返回值sum是当前id的improtance,那么函数执行完后,返回到上一层函数,正好可以和之前的improtance累加。所以没问题。

还有一点要注意就是题目中有不同的vector。有必要掌握新的vector遍历方法。

可以参考论C++11 中vector的N种遍历方法

有必要注意employees中存储的是Employee* ,是指针,所以才使用了->运算符。

对于C++中的类,结构体,共用体等具有成员函数或变量的数据类型(对象)时,如果存在对象a,而对象中有成员b,那么可以使用a.b的方式,使用对应的成员。
如果存在变量p,指向a, 即p = &a, 这时可以用p->b来使用成员b。即,->操作符是用于带成员的类型对应指针上,用来提取成员变量或函数用的。p->b等同于(*p).b。对于任意的对象a,写作(&a)->b也是可以的,不过很少有这样写。

主要用于访问类的成员,->主要用于类类型的指针访问类的成员,而.运算符,主要用于类类型的对象访问类的成员。
举例

    class A
        {public :int a}
    A ma;
    A *p=&ma;

那么指针p应使用->来访问成员a,比如p->a,而ma应使用.来访问,比如ma.a区别就在这里,凡是指针就使用->,对象就使用.运算符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值