如何解决如何从O登录中的电话簿字符串中查找名称
我从一次采访中得到了这个问题,我想我需要运行一个二进制搜索,但是,我无法弄清楚实现方式,请您帮我一下。
这些名称和数字的格式为:
- 姓名和电话号码按空格分隔
- 不同名称由
\n
分隔
还对名称进行排序。
例如
a 123\nb 234\nd 987\n
找到b
的数量,
输出应为234
该算法的时间复杂度应为O(logN)。
给定的函数签名为
func findNumber(phonebook string) string
解决方法
二进制搜索的下一个实现假设列表中存储了const pool = new pg.Pool(config);
app.get('/',(req,res,next) => {
//query the database
const query = {
name: "getDB",text: "select * from smartsneakers",}
//init the accountList to store information
var accountList = [];
pool.query(query,(err,res) => {
if (err) {
res.status(500).json({"status_code": 500,"status_message": "internal server error"});
} else {
//loop to check each row
for (let i = 0; i < res.rows.length; i++) {
accountList.push(res.rows[i]);
//console.log(accountList)
}
}
});
//console.log(accountList); will return [] at this level
//close connection
pool.end();
//render the page
res.render("ejs/index",{
title: "campaign management",account: accountList,});
});
var server = http.createServer(app);
server.listen(3000,function(){
console.log('listening on port',3000);
});
对名称和电话号码:
N
如果用户可用,它将返回电话号码。运行时间为O(MlogN),其中M为def search(lines,name):
l = 0
r = len(lines)
while l + 1 < r:
m = (l + r) // 2
if lines[m][0] <= name:
l = m
else:
r = m
return lines[l][1] if lines[l][0] == name else None
print(search([("a","123"),("b","234"),("c","987")],"b")) # returned value "234"
print(search([("a","d")) # returned value None
的长度,N为name
列表的大小。您可以说名称在长度方面有上限,比方说100000000个字符:-P,因此实际运行时间为O(logN)。
关于代码:
考虑范围为lines
,即左侧包括在内,右侧包括在内。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。