微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从O登录中的电话簿字符串中查找名称

如何解决如何从O登录中的电话簿字符串中查找名称

我从一次采访中得到了这个问题,我想我需要运行一个二进制搜索,但是,我无法弄清楚实现方式,请您帮我一下。

问题被给了一个文件,里面有名字和电话号码。

这些名称和数字的格式为:

  1. 姓名和电话号码按空格分隔
  2. 不同名称\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 举报,一经查实,本站将立刻删除。