当前位置: 首页 > news >正文

青训5_1112_01 小S的倒排索引(内置方法 set(a) set(b) 及sorted 排序)

青训5_1112_01 小S的倒排索引.md

文章目录

  • 青训5_1112_01 小S的倒排索引.md
    • 问题描述
      • 测试样例
      • 示例
    • 思路
      • 答案1 内置方法 set(a)& set(b) 及sorted 排序
      • 方法2 不用内置方法,首席排序和共同数字集合

问题描述

小S正在帮助她的朋友们建立一个搜索引擎。为了让用户能够更快地找到他们感兴趣的帖子,小S決定使用倒排索引。倒排索引的工作原理是:每个单词都会关联一个帖子ID的列表,这些帖子包含该单词,且ID按从小到大的顺序排列。例如,单词“夏天“可能出现在帖子1、帖子3和帖子7中,那么这个单词的倒排链就是[1,3,7]。如果用户想同时找到包含"夏天”和”海滩"的帖子,小S需要找出两个倒排链的交集,且将结果按照从大到小的顺序输出。现在,给定两个单词的倒排链数组a和b,请你帮助小S找出同时包含这两个单词的帖子ID,并按从大到小的顺序返回结果。

测试样例

样例7:
输入:a= [1,2,3,7,b = [2,5,7]输出:[7,2]样例2:
输入:a =[1,4,8,10],b = [2,4,8,10]输出:[10,8,4]样例3:
输入:a =[3,5,9],b = [1,4,6]输出:口样例4:
输入:a = [1,2,3],b= [1,2,3]输出:[3,2,1]

示例

def solution(a, b):# write code herereturn []if __name__ == '__main__':print(solution([1, 2, 3, 7], [2, 5, 7]) == [7, 2])print(solution([1, 4, 8, 10], [2, 4, 8, 10]) == [10, 8, 4])print(solution([3, 5, 9], [1, 4, 6]) == [])print(solution([1, 2, 3], [1, 2, 3]) == [3, 2, 1])

思路

找到两个数据中的相同数字、同时从大到小排序为数组

答案1 内置方法 set(a)& set(b) 及sorted 排序

def solution(a, b):# 将两个列表转换为集合并求交集common = set(a) & set(b)# 将交集转换为列表并降序排序return sorted(list(common), reverse=True)if __name__ == '__main__':print(solution([1, 2, 3, 7], [2, 5, 7]) == [7, 2])print(solution([1, 4, 8, 10], [2, 4, 8, 10]) == [10, 8, 4])print(solution([3, 5, 9], [1, 4, 6]) == [])print(solution([1, 2, 3], [1, 2, 3]) == [3, 2, 1])

方法2 不用内置方法,首席排序和共同数字集合

def solution(a, b):# 用于存储结果的列表result = []# 获取数组长度len_a = len(a)len_b = len(b)# 初始化两个指针,分别指向a和b的起始位置i = 0j = 0# 当两个指针都未到达数组末尾时继续while i < len_a and j < len_b:if a[i] == b[j]:  # 找到相同元素result.append(a[i])i += 1j += 1elif a[i] < b[j]:  # a中的元素较小,移动a的指针i += 1else:  # b中的元素较小,移动b的指针j += 1# 将结果反转,实现从大到小排序left = 0right = len(result) - 1while left < right:result[left], result[right] = result[right], result[left]left += 1right -= 1return result

http://www.mrgr.cn/news/71022.html

相关文章:

  • ElasticSearch7.x入门教程之中文分词器 IK(二)
  • Java集合分页
  • Sentinel服务保护
  • 40分钟学 Go 语言高并发:并发下载器开发实战教程
  • 【前端】深入理解 JavaScript 逻辑运算符的优先级与短路求值机制
  • Vue移动端网页(H5)预览pdf文件(pdfh5和vue-pdf)(很详细)
  • No module named ‘torch.nn.attention‘
  • 【C++】C++基础知识
  • 期权懂|你知道场外个股期权该如何参与吗?
  • 微服务改造:踩过的坑!
  • 2. Sharding-JDBC广播表和绑定表操作
  • 阿里云Linux安装Docker服务报错问题
  • 【轻松远程处理图片:在线图片编辑工具Photopea群晖NAS部署解决方案】
  • 解决 C/C++ 中 “invalid use of incomplete type” 编译错误
  • 【前端】深入浅出的React.js详解
  • Spring Boot编程训练系统:深入设计与实现
  • 双指针算法的妙用:提高代码效率的秘密(3)
  • 【三宝的身高】
  • 数据湖系列之四 | 数据湖存储加速方案的发展和对比分析
  • C# 后端方法返回时间戳
  • 2025年河南定向选调生报名时间
  • java ssm 个人学习管理系统 学习安排 学生在线学习管理 源码 jsp
  • 【GDB调试】智慧中控项目的调试
  • 【Linux进程篇4】谈:操作系统进程调度各种基本状态(运行,挂起,阻塞等)
  • 第18篇 :深入剖析systemverilog中 randomize 静态static约束案例(四)
  • 中国人工智能影响力人物谌鹏飞行善公益演讲--《AI就是爱》