【零基础】学python数据结构与算法笔记7

news2024/12/24 0:27:01

文章目录

  • 前言
  • 41.查找排序部分习题
  • 42.查找排序习题1
  • 43.查找排序习题2
  • 44.查找排序习题3
  • 45.查找排序习题4
  • 总结


前言

学习python数据结构与算法,学习常用的算法,
b站学习链接

41.查找排序部分习题

选题部分来自leetcode
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

42.查找排序习题1

242. 有效的字母异位词

第一个思想是将两个字符串转换为列表排序,如果排完后相等,则True,否则False
在这里插入图片描述
在这里插入图片描述

在python的排序有两个方法,一个是list对象的sort方法,另外一个是builtin函数里面sorted,主要区别:
1.sort仅针对于list对象排序,无返回值, 会改变原来队列顺序
2.sorted是一个单独函数,可以对可迭代(iteration)对象排序,不局限于list,它不改变原生数据,重新生成一个新的队列。

第二个思想是将两个字符串中每个字符的个数存在字典里,比较字典是否相等,
在这里插入图片描述
时间复杂度为O(n),理论上比排序要快,排序O(nlogn)

43.查找排序习题2

74. 搜索二维矩阵

第一种思路是线性查找,复杂度是O(n^2),因为 if in 是复杂度为n的查找
在这里插入图片描述
第二种思路是二分查找,复杂度是O(nlogn),因为题目中给了。里面每个列表是有序的,所以可以用二分查找,把二维矩阵看成是一维的,每行的第一个整数大于前一行的最后一个整数。
二分查找 中的中间值要改变,从一维转换成二维。
【零基础】学python数据结构与算法笔记2中讲过了二分查找
先找规律,3的位置是[0][3],4的位置是[1][0]
0 1 2 3
4 5 6 7
8 9 10 11

相当于
行的位置 i = num//4
列的位置 j = num%4
在这里插入图片描述
注意越界情况:矩阵为[] 或者[[],[],[],[]]的情况,使得right = -1

44.查找排序习题3

1.两数之和
第一种思路是遍历,从前往后找,[2,7,11,15],2和7比,2和11比,2和15比,7和11比,7和15比。。。找到相加等于目标值输出下标,因为从前往后找,i在前,j在后。

在这里插入图片描述

167. 两数之和 II - 输入有序数组
输入有序的数组,就可以用二分查找的方法写
在这里插入图片描述
不过这里超出时间限制,可能用时都比较少。

45.查找排序习题4

1.两数之和
第二个思路是二分查找
先把这个列表的每一个元素及其下标存在一个新列表内,在新列表按元素大小排好序,再进行二分查找,在力扣里还是超出了时间限制。
在这里插入图片描述
在网上找到另外一种解法,很巧妙。
创建一个字典,如果目标元素和遍历的元素的差值不在该字典中,就将该遍历的元素存在字典里(键是元素,值是下标),
如果差值在这个字典里,说明已经满足了有两个值加起来等于目标值,
于是返回这个差值的下标和该遍历元素的下标。因为是从左往右找,所以越往后找的下标一定在后面。
在这里插入图片描述

总结

练了下排序和查找的题

文章目录

  • 前言
  • 41.查找排序部分习题
  • 42.查找排序习题1
  • 43.查找排序习题2
  • 44.查找排序习题3
  • 45.查找排序习题4
  • 总结


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/150565.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝桥杯备赛Day6——链表

目录 数组的缺点 链表 单向链表 双向链表 Python链表的实现 手写链表 数组的缺点 1)需要占用连续的空间 若某个数组很大,可能没有这么大的连续空间给它用。 2〉不方便删除和插入 例如删除数组中间的一个数据,需要把后面所有的数据往前挪填补这个空…

CODESYS开发教程7-字符串及其基本操作

今天继续我们的小白教程,老鸟就不要在这浪费时间了😊。 前面一期我们介绍了CODESYS的关键字及变量。这一期主要介绍CODESYS的字符串类型,以及如何利用字符串操作函数来实现字符串的查找、插入、替换、连接、分割、删除等相关操作。注意本文介…

Realsense相机的RGB与depth图像的对齐

第三部分 将RGB图像和Depth图像对齐 文章目录第三部分 将RGB图像和Depth图像对齐前言一、创建对齐的cpp文件1.用vim创建C文件二、使用CMake构建C工程1.创建并编写CMakeList.txt文件2.编译CMakeLists.txt总结前言 将RGB图像和深度图像对齐有两种方式,一种是将深度图…

音视频开发-第一章-H264编解码

目录参考原文一、概述二、封装格式2.1、视频文件封装格式2.2、音视频编码方式2.2.1、视频编码方式2.2.2、音频编码方式三、H264相关概念3.1、H264基本单元3.2、帧类型3.3、GOP(画面组)3.4、IDR 帧四、H264压缩方式4.1、H264压缩方式4.2、H264压缩方式说明五、H264分层结构5.1、…

【websocket】前端websocket 实时通信

前端websocket 实时通信 文章目录前端websocket 实时通信什么是websocket为什么传统的http协议不能做到websocket实现的功能websocket前后端所用到的事件对比WebSocket.readyState代码什么是websocket websocket是HTML5开始提供的一种网络通信协议,它诞生的目的是在…

60条小妙招帮助你开车更省油

1、把备胎和千斤顶,工具,都放在家里,不跑长途不带这些,省油。2、说明书上说92号或以上标号,那么加95号油省油。如果是95或以上的标注,那就加98省油。3、驾驶中尽量减少急加速 急刹车,省油。4、驾…

Java——多态

好久不见啊,兄弟们!!这不将近期末考试了吗,阿涛平日里课听的不多,所以最近都在疯狂补课,祖宗之法也可变,阿涛的学校终于不是二十周校历了!!希望从今往后我们的生活都能够…

[oeasy]python0041_ 转义字符_转义序列_escape_序列_sequence

转义序列 回忆上次内容 上次回顾了5bit-Baudot博多码的来历从 莫尔斯码 到 博多码 原来 人 来 收发电报 现在 机器 来 收发电报 输入方式 从 电键改成 键盘 输出方式 从 纸带变成 打印纸张 后来 电传打字机ASR-33成为 初代 经典终端 除了 \n 和 \r 之外 还有什么 特殊字符 吗…

前端格式化工具使用(eslint、stylelint、prettier、lint-staged和husky搭配格式化代码)

目录 eslint 安装eslint .eslintrc.js env extends parser parserOptions rules globals plugins 屏蔽eslint检测具体规则 官方规则 stylelint 安装stylelint 创建stylelint配置文件 .eslintrc.js extends sass文件的格式检查 prettier 安装使用prettier …

Vue组件-插槽

一、插槽 1. 组件的三大核心:属性(data、props)、事件、插槽 2. 插槽(slot) 插槽(slot)将父组件的内容与子组件的模板相混合,从而弥补了视图的不足。 插槽的目的:使组件…

ConstraintLayout2

ConstraintLayout2ImageFilterView 属性 app:altSrc:altSrc提供的资源将会和src提供的资源通过crossfade属性形成交叉淡化效果。默认情况下,crossfade0,altSrc所引用的资源不可见,取值在0-1app:saturation:float型,默认1&#xf…

FPGA知识汇集-时钟系统的移植

ASIC 和FPGA芯片的内核之间最大的不同莫过于时钟结构。ASIC设计需要采用诸如时钟树综合、时钟延迟匹配等方式对整个时钟结构进行处理,但是 FPGA设计则完全不必。因为后者有内建的时钟资源:锁相环、频率综合器、移相器,以及具有低延迟特性的专用时钟布线网…

Unity基于状态机的架构与设计

我们做游戏的时候经常会有流程控制,流程控制的方法有很多,行为决策树,状态机等。本质差别都不大,就是把每一段执行逻辑做成一个一个的节点,根据条件执行某个节点,切换到某个节点。今天给大家分享一下基于状…

如何在VSCode中添加Python解释器并安装Python库

如何在VSCode中添加Python解释器并安装Python库作者介绍一. 安装VScode编辑器二. 安装Python解释器三. 在VScode中添加Python解释器四. 创建项目并在VScode中打开;五、在VScode中安装Python库作者介绍 孟莉苹&#xf…

【TypeScript入门】TypeScript入门篇——对象

对象其实就是一种封装的概念,它把事物封装成一个类,然后提供类的接口,而具体的过程人们是看不到的。 一、对象实例 二、TypeScript 类型模板 三、鸭子类型(Duck Typing) 对象是包含一组键值对的实例。 值可以是标量、函数、数组、对象等&am…

Linux常用命令——lsof命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) lsof 显示Linux系统当前已打开的所有文件列表lsof -p pid 补充说明 lsof命令用于查看你进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系…

十四、Node.js 中 session验证登录

在前一篇内容中讲到这个cookie实现验证登录,cookie是存储在客户端的,而session是存储在服务器的,相比较session的安全性会更高,session对象存储特定用户会话所需要的属性以及配置信息,服务通过session对象将用户的信息…

CPU使用率过高的原因及解决方法

常见的CPU使用率过高可不是职场CPU哦,而是电脑的中央处理器,CPU作为计算机系统重要的运算和控制核心,可谓是“很忙”的存在。在我们日常使用电脑设备时,由于打开的软件、游戏、网页等程序容易导致电脑运作卡顿,这时候就…

《图机器学习》-Traditional Methods for Machine Learning in Graphs

Traditional Methods for Machine Learning in Graphs前言一、Node-Level Tasks and Features二、Link-Level Tasks and Features三、Graph-Level Tasks and Features前言 图机器学习任务可以分为三种: Node-level prediction:节点级的预测 如对节点进…

最优控制学习笔记3----无约束条件的泛函极值问题

无约束条件的最优控制问题 设函数 x(t)x(t)x(t) 在 [t0,tf][t_0, t_f][t0​,tf​] 区间上连续可到,考虑 Lagrange型性能指标函数 J[x(t)]∫t0tfL[x(t),x˙(t),t]dtJ[x(t)]\displaystyle\int_{t_0}^{t_f}L[x(t), \dot{x}(t), t]dtJ[x(t)]∫t0​tf​​L[x(t),x˙(t),…