`

Linkedin Interview - Sum of NestedInteger

 
阅读更多

Given a nested list of integers, returns the sum of all integers in the list weighted by their depth 

For example, given the list {{1,1},2,{1,1}} the function should return 10 (four 1's at depth 2, one 2 at depth 1) 

Given the list {1,{4,{6}}} the function should return 27 (one 1 at depth 1, one 4 at depth 2, one 6 at depth2) 

 

/** 
* This is the interface that represents nested lists. 
* You should not implement it, or speculate about its implementation. 
*/ 
public interface NestedInteger 
{ 
//Returns true if this NestedInteger holds a single integer, rather than a nested list 
public boolean isInteger(); 

//Returns the single integer that the NestedInteger holds, if it holds a single integer 
//Returns null if this NestedInteger holds a nested list 
public Integer getInteger(); 

//Returns the nested list that this NestedInteger holds, if it holds a nested list 
//Returns null if this NestedInteger holds a single integer 
public List<NestedInteger> getList(); 
}

 

Solution:

public int sumOfNestedInteger(NestedInteger nest) {
	if(nest.isInteger()) {
		return nest.getInteger();
	}
	return sumList(nest.getList(), 1);
}

private int sumList(List<NestedInteger> list, int depth) {
	int sum = 0;
	for(NestedInteger item: list) {
		if(item.isInteger()) {
			sum += item.getInteger()*depth;
		} else {
			sum += sumList(item.getList(), depth+1);
		}
	}
	return sum;
}

 

Follow Up:

followup说改成return the sum of all integers in the list weighted by their “reversed depth”.

也就是说{{1,1},2,{1,1}}的结果是(1+1+1+1)*1+2*2=8

 

思路:

需要两个变量计数,sum 与 prev

例子 {{2,2,{3}},1,{2,2}}

一共三层

第一层 prev = 1 sum=1

第二层 prev =prev+2+2+2+2  最后prev =9, sum = 10

第三层 prev =prev +3 prev = 12        sum =22

理论结果   3+2*2*4+1*3 =22

public int sumOfReversedWeight(NestedInteger ni) {
	if(ni.isInteger()) {
		return ni.getInteger();
	}
	int prev = 0, sum = 0;
	List<NestedInteger> cur = ni.getList();
	List<NestedInteger> next = new ArrayList<>();
	while(!cur.isEmpty()) {
		for(NestedInteger item:cur) {
			if(item.isInteger()) {
				prev += item.getInteger();
			} else {
				next.addAll(item.getList());
			}
			sum += prev;
			cur = next;
			next = new ArrayList<>();
		}
	}
	return sum;
}

 

Reference:

http://www.careercup.com/question?id=5139875124740096

http://www.mitbbs.com/article_t1/JobHunting/32850869_0_1.html

分享到:
评论

相关推荐

    Flagship-linkedin-release-campaign2.apk

    Flagship-linkedin-release-campaign2.apk

    LinkedIn templater-crx插件

    LinkedIn Templater-crx插件是一款专为LinkedIn用户设计的浏览器扩展程序,主要目的是为了帮助用户自定义他们在LinkedIn上发送的连接请求消息。这款插件特别适用于那些希望在使用LinkedIn进行专业网络拓展时,能以...

    LinkedIn Hashtags-crx插件

    LinkedIn Hashtags-crx插件是一款专门针对LinkedIn社交媒体平台设计的扩展程序,旨在帮助用户优化其在平台上的帖子,以提高可见度和互动性。这款插件的核心功能是提供对LinkedIn热门话题标签(hashtags)的分析,使...

    LinkedIn-吕海-Apache Beam 领英流式计算平台的最新实践.pdf

    LinkedIn-吕海-Apache Beam 领英流式计算平台的最新实践

    Linkedin Filter-crx插件

    LinkedIn Filter-crx插件是一款专为英语用户设计的Chrome扩展程序,其主要功能是优化LinkedIn用户的体验,特别是针对查看第一度联系人发布的出版物。这款插件旨在帮助用户过滤掉不必要的信息,专注于查看与自己直接...

    Linkedin Lookup-crx插件

    LinkedIn Lookup-crx插件是一款专为提升LinkedIn使用体验而设计的浏览器扩展程序,适用于英语环境,特别是美国用户。这款插件的主要功能是在任何网页上帮助用户迅速查找与LinkedIn相关的公司、公司员工或个人联系人...

    前端开源库-passport-linkedin-oauth2

    **Passport-LinkedIn-OAuth2** 是一个专为前端开发者设计的开源库,它使得在Web应用程序中集成LinkedIn的身份验证过程变得更为简单。这个库是基于 **Passport** 框架,一个广泛使用的Node.js中间件,用于处理身份...

    The Facebook Data Scientist Interview - Towards Data Science

    它从一名招聘人员通过电子邮件、Linkedin或在网站上申请后与你联系开始。招聘人员将安排一个30分钟的电话初筛,通过电话与你谈论Facebook,了解你对公司的兴趣,你希望在哪个部门工作,以及你的期望是否与Facebook对...

    LinkedIn Dux-Soup。「Dux-Soup for LinkedIn」-crx插件

    聪明的浏览器插件为LinkedIn简化了生成和业务开发。 关于Dux-Soup:https://www.dux-soup.com Dux-Soup使您可以轻松地在LinkedIn上找到,吸引和吸引潜在客户。 它会自动查看潜在客户简介,认可技能,跟踪活动并代表...

    linkedin-profile-info-api:一个简单的API,可以从给定的用户名请求和解析JSON格式的基本公共LinkedIn个人资料数据

    cd linkedin-profile-info-api npm install 跑步 npm start 终点 GET /info/:username从给定的LinkedIn用户名以JSON格式返回配置文件信息 配置 应用程序使用的环境变量 PORT -公开API服务器的端口 PROXY_URL出站请求...

    linkedin-pyhon-test.docx

    Python是广泛应用于数据分析、Web开发、自动化脚本等多个领域的强大编程语言。对于想要在领英上提升自己Python技能的人来说,了解并掌握一些基础到高级的知识点至关重要。以下是一些核心概念的详细解释: ...

    LinkedIn Search - Salesbolt :high_voltage:-crx插件

    **LinkedIn Search - Salesbolt :high_voltage:-crx插件** LinkedIn Search - Salesbolt是一款专为专业人士设计的Chrome浏览器扩展程序,旨在提升LinkedIn平台上的搜索效率和深度。通过这款插件,用户可以更轻松地...

    linkedin-clone-react-frontend:类似于LinkedIn的软件的前端

    类似于LinkedIn的软件的前端 具有基本功能的LinkedIn软件的克隆。 演示版 请在查看Netlify演示。 入门 这些说明将为您提供在本地计算机上运行并运行的项目的副本,以进行开发和... docker exec -it linkedin-react_l

    next - LinkedIn profile notes-crx插件

    向LinkedIn添加其他工具,包括连接消息预设和各个用户注释。 此扩展程序可帮助您通过便笺系统记住与个人有关的信息,该信息系统已同步到您的Google帐户,并且仅对您可见。 它还允许拥有易于访问的连接消息预设,并...

    linkedin-skill-assessments-quizzes

    Linkedin测验答案,技能评估测试 该资料库适合那些寻求LinkedIn评估测验问题答案或愿意通过参与测试来帮助他人的人。 或者,您可能想创建您的第一个拉取请求并被添加为贡献者。 无论您的目标是什么-在这里始终欢迎您...

    linkedin-auto-bot:用于自动连接的 LinkedIn 机器人

    LinkedIn 自动连接工具 ... 它会安装两个二进制文件: linkedin-auto-bot和lac到您的系统路径。 用法 使用lac命令按如下方式使用它: $ lab -u enter_your_linkedin_email &gt; -k Enter LinkedIn password: ***

    agorava-linkedin-cdi-0.6.0-sources.jar

    官方版本,亲测可用

    agorava-linkedin-cdi-0.5.0-sources.jar

    官方版本,亲测可用

    agorava-linkedin-api-0.6.0-sources.jar

    官方版本,亲测可用

    agorava-linkedin-api-0.5.0-sources.jar

    官方版本,亲测可用

Global site tag (gtag.js) - Google Analytics