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

域名购买后如何建设网站昆明做网站公司

域名购买后如何建设网站,昆明做网站公司,一般通过逸民,北京学设计去哪个网站好1. http和https的区别#xff1f; HTTP是一种常用的协议#xff0c;但在数据传输过程中不加密#xff0c;安全性较低。 HTTPS通过加密数据传输和身份验证#xff0c;提供了更高的安全性。 对于涉及敏感信息#xff08;例如个人身份信息、信用卡数据等#xff09;的网站和…1. http和https的区别 HTTP是一种常用的协议但在数据传输过程中不加密安全性较低。 HTTPS通过加密数据传输和身份验证提供了更高的安全性。 对于涉及敏感信息例如个人身份信息、信用卡数据等的网站和应用程序使用HTTPS是必要的。2. django请求的生命周期 请求到达当用户在浏览器中输入URL并发送请求时Web服务器接收到请求并将其转发给Django应用程序。中间件处理在视图函数执行之前Django的中间件会对请求进行一些预处理操作。中间件可以执行各种任务如身份验证、请求日志记录、请求处理等。URL路由 Django的URL路由系统将根据请求的URL路径来匹配相应的视图函数或处理程序。它会检查urls.py文件中定义的URL模式并将请求分发到匹配的处理程序。视图函数执行匹配的视图函数将被执行它会接收请求对象作为参数并根据业务逻辑进行处理。视图函数可能会访问数据库、调用其他函数、生成响应等。模板渲染如果视图函数需要将数据呈现到模板中它将从数据库或其他数据源中检索数据并将数据传递给相应的模板。模板引擎将使用数据来生成最终的HTML响应。响应生成视图函数返回一个HTTP响应对象该对象包含状态码、响应头和响应体。响应可以是HTML页面、JSON数据、文件下载等。中间件处理在响应发送到客户端之前Django的中间件可以对响应进行一些后处理操作。它们可以修改响应内容、添加响应头、设置Cookie等。响应发送最终HTTP响应将通过Web服务器发送回客户端客户端浏览器会接收并解析响应将其渲染为可视化的内容。3. 简述django中间件及其应用场景 Django中间件是一个可插拔的组件用于在处理请求和响应的过程中执行预处理和后处理操作。中间件可以在请求到达视图函数之前和响应发送给客户端之前进行干预和处理。 它们可以执行各种任务例如身份验证、日志记录、缓存、异常处理、性能优化等。简述django FBV和CBV FBV是基于函数编程CBV是基于类编程本质上也是FBV编程在Djanog中使用CBV 则需要继承View类在路由中指定as_view函数返回的还是一个函数在DRF中的使用的就是CBV编程5. django中的F和Q函数的作用 在Django ORM中F是一个用于数据库查询的特殊对象用于执行基于数据库字段之间的比较和操作在Django ORM中Q对象是用于构建复杂查询条件的工具它提供了逻辑操作符如AND、OR、NOT来组合多个查询条件。6. django的模板中filter、simple_tag、inclusion_tag的区别 在Django模板中filter、simple_tag和inclusion_tag都是用于自定义模板标签和过滤器的方法但它们在功能和使用方式上有一些区别 Filter过滤器参数1-2个-过滤器是用于在模板中处理变量的函数可以对变量进行一些简单的处理或转换。-过滤器可以通过管道|将其应用于变量以修改变量的输出结果。-过滤器通常用于对字符串、日期、数字等数据进行格式化或转换。-Django提供了一些内置的过滤器例如date、lower、upper等同时也支持自定义过滤器。Simple Tag简单标签参数无限制-简单标签是一种自定义模板标签它是一个Python函数接受参数并生成一些输出。-简单标签可以在模板中以类似于函数调用的方式使用并将标签的返回值插入到模板中。-简单标签通常用于执行一些简单的逻辑操作生成动态内容并将其嵌入到模板中。Inclusion Tag包含标签参数无限制-包含标签也是一种自定义模板标签它是一个Python函数用于生成包含其他模板的片段。-包含标签接受参数并使用指定的参数渲染其他模板。-包含标签通常用于将公共的模板片段如导航栏、页脚等封装为可重用的组件并在多个模板中使用。7. select_related和prefetch_related的区别和使用场景 select_related 和 prefetch_related 都是 Django ORM 提供的用于优化数据库查询的方法但它们的作用和使用场景略有不同。1. **select_related**:- 作用通过使用 select_related 方法Django 会在查询时使用 SQL 的 JOIN 操作将外键关联的对象一并获取从而在单次查询中获取所有相关数据。- 使用场景适用于 ForeignKey 和 OneToOneField 等外键关联的查询。当你需要在一个查询中获取主对象和关联对象的数据时可以使用 select_related 来避免多次数据库查询提高性能。- 注意事项select_related 适合于外键关联但如果涉及多对多关系或反向关联性能可能不如 prefetch_related因为 select_related 会产生多个 JOIN 操作可能导致性能下降。2. **prefetch_related**:- 作用prefetch_related 用于优化查询涉及多对多关系和反向关联例如 ManyToManyField 和 Reverse ForeignKey的情况。它会在单次查询中获取所有相关数据避免了 N1 查询问题。- 使用场景适用于优化多对多关系和反向关联的查询。当你需要在查询中获取主对象及其关联对象的数据并且涉及多对多关系或反向关联时可以使用 prefetch_related。- 注意事项prefetch_related 可以显著提高性能但需要注意不要过度使用以免导致不必要的资源消耗。综合使用场景和注意事项可以根据查询需求选择适当的方法- 如果查询涉及到外键关联并且你需要获取主对象和关联对象的数据可以考虑使用 select_related。- 如果查询涉及到多对多关系或反向关联并且你需要获取主对象及其关联对象的数据可以考虑使用 prefetch_related。最佳实践是根据数据模型和具体查询需求来选择使用哪种方法以达到最佳性能和资源利用。8. 简述python中的垃圾回收机制 Python 使用自动内存管理其中垃圾回收Garbage Collection是其中一个重要的方面。 Python 的垃圾回收机制主要依靠引用计数和循环垃圾回收Cycle Detector。1. **引用计数Reference Counting**- Python 使用引用计数来跟踪对象的引用次数。每当一个对象被引用其引用计数加一- 当引用失效时计数减一。当引用计数降为零时说明该对象不再被引用可以被回收。a [1, 2, 3] # 引用计数为1b a # 引用计数为2del a # 引用计数为12. **循环垃圾回收Cycle Detector**- 引用计数不能解决循环引用的问题例如 A 对象引用了 B 对象而 B 对象也引用了 A 对象。- 为了解决这个问题Python 使用了循环垃圾回收器。这个机制会周期性地检测并清理不再被引用的循环引用对象。3. **gc 模块**- Python 还提供了 gc 模块可以手动触发垃圾回收。import gcgc.collect() # 手动触发垃圾回收4. **分代回收**- 为了提高垃圾回收的效率Python 使用了分代回收策略。- 将内存对象分为三代新创建的对象放在第一代经过一段时间仍然存活的对象升级到下一代。- 垃圾回收频率随着代数的增加而降低。这种垃圾回收机制使得 Python 开发者无需手动管理内存大大减轻了程序员的负担。 垃圾回收可以确保内存资源被高效利用同时避免了内存泄漏等问题。9. 简述python的元类 元类Metaclass是 Python 中一个比较高级和神秘的概念它用于控制类的创建过程。 在 Python 中类也是对象而元类就是用来创建这些类的类的类。以下是一些关键点 1. **类是对象** 在 Python 中类也是对象。你可以将类赋值给变量将它传递给函数从它继承并在运行时创建它们。2. **type 是元类** 在 Python 中type 是大多数类的元类。type 不仅是一个内置类还是一个元类。它能够动态地创建类。3. **__metaclass__ 属性** 你可以为一个类指定元类通过在类中定义 __metaclass__ 属性。如果未指定Python 使用全局命名空间中的 __metaclass__。如果都没有找到Python 使用内置的 type 作为元类。以下是一个简单的例子演示如何使用元类创建一个简单的元类 class MyMeta(type):def __new__(cls, name, bases, attrs):# 修改类名attrs[modified_name] name _Modifiedreturn super(MyMeta, cls).__new__(cls, name, bases, attrs)class MyClass(metaclassMyMeta):def __init__(self, value):self.value value# 创建 MyClass 实例 obj MyClass(Hello)# 输出修改后的类名 print(obj.modified_name) # 输出 MyClass_Modified在这个例子中MyMeta 是一个元类通过定义 __new__ 方法 我们可以在创建类时修改类的行为。 这里的修改是添加了一个新的属性 modified_name用于存储修改后的类名。需要注意的是元类的使用相对较高级通常在一般的应用程序中不需要直接使用元类。10. 简述python中如何实现单例模式 在 Python 中实现单例模式的方式有多种其中比较常见的是使用装饰器或者使用类方法。以下是两种实现单例模式的方式 ### 1. 使用装饰器 def singleton(cls):instances {}def get_instance(*args, **kwargs):if cls not in instances:instances[cls] cls(*args, **kwargs)return instances[cls]return get_instancesingleton class MyClass:def __init__(self, name):self.name name# 创建实例 obj1 MyClass(Instance 1) obj2 MyClass(Instance 2)# obj1 和 obj2 是同一个实例 print(obj1 is obj2) # 输出 True### 2. 使用类方法class SingletonClass:_instance Nonedef __new__(cls, *args, **kwargs):if not cls._instance:cls._instance super(SingletonClass, cls).__new__(cls)return cls._instancedef __init__(self, name):if not hasattr(self, initialized):self.name nameself.initialized True# 创建实例 obj1 SingletonClass(Instance 1) obj2 SingletonClass(Instance 2)# obj1 和 obj2 是同一个实例 print(obj1 is obj2) # 输出 True这两种方法都能够确保在程序中只创建一个类的实例。 选择其中的哪一种方式取决于你的代码结构和个人偏好。 使用装饰器方式比较简洁而使用类方法方式更显式。11. 简述python中的多线程多进程和协程 在 Python 中有多种并发编程的方式其中主要包括多线程、多进程和协程。### 多线程Multithreading 1. **GIL全局解释器锁** Python 的 CPython 解释器中存在GIL它使得在同一时刻只能有一个线程执行Python字节码。这对于 CPU 密集型任务来说可能会有性能问题但对于 I/O 密集型任务多线程仍然可以提高效率。2. **threading 模块** Python 提供了 threading 模块用于创建和管理线程。尽管有 GIL 的存在多线程在 I/O 密集型任务中仍然能够提供一定的好处。import threadingdef worker():print(This is a worker thread.)# 创建并启动线程 thread threading.Thread(targetworker) thread.start() thread.join()### 多进程Multiprocessing 1. **独立进程** 每个 Python 进程有独立的解释器和 GIL因此可以充分利用多核 CPU。 2. **multiprocessing模块** Python 提供了multiprocessing模块用于创建和管理进程。from multiprocessing import Processdef worker():print(This is a worker process.)# 创建并启动进程 process Process(targetworker) process.start() process.join()### 协程Coroutine 1. **轻量级** 协程是一种更轻量级的并发编程方式不需要线程或进程的切换开销。 2. **asyncio 模块** Python 提供了 asyncio 模块支持异步编程和协程。协程通常用于处理大量的 I/O 操作如网络请求。import asyncioasync def worker():print(This is an async worker.)# 创建并运行协程 asyncio.run(worker())总体而言多线程适用于 I/O 密集型任务多进程适用于 CPU 密集型任务 而协程则适用于高并发的异步 I/O 操作。在实际应用中根据任务的性质和需求选择合适的并发编程方式是很重要的。12. 简述Python中的GIL GILGlobal Interpreter Lock是 Python 解释器中的全局解释器锁 它是为了保证在多线程环境下只有一个线程执行 Python 字节码。 GIL 是 CPython 解释器的特性其他一些实现比如 Jython、IronPython并不具有 GIL。以下是关于 GIL 的一些要点 1. **GIL 是什么** GIL 是一个互斥锁它保护解释器免受多线程并发执行字节码的影响。2. **影响** 由于 GIL 的存在Python 的多线程无法实现真正的并行执行。在同一时刻只有一个线程能够在一个进程中执行 Python 字节码。3. **适用场景** GIL 对于 CPU 密集型的任务影响较大因为在同一时刻只有一个线程能够执行。对于 I/O 密集型的任务GIL 的影响相对较小因为线程在等待 I/O 操作时会释放 GIL。4. **解决方案** 对于 CPU 密集型的任务可以考虑使用多进程来充分利用多核 CPU。对于 I/O 密集型的任务可以使用异步编程和协程或者考虑使用其他语言的实现比如使用 Cython 编写 C 扩展。5. **Python 3.2 之后的改进** 在Python 3.2版本之后GIL在某些情况下会更加友好例如在I/O操作时线程会更主动地释放 GIL。虽然GIL在一些情况下可能导致性能问题但在实际应用中许多 Python 程序主要是 I/O 密集型的 因此 GIL 并不会成为主要的瓶颈。在需要充分利用多核 CPU 的情况下可以考虑使用多进程或其他并发模型。13. python中的死锁如何避免 死锁是多线程或多进程编程中常见的问题它发生在两个或多个线程或进程互相等待对方释放资源 而无法继续执行的情况。在 Python 中死锁通常是由于线程或进程之间循环等待锁的释放而导致的。以下是一些避免死锁的常见方法 1. **锁的顺序** 确保所有线程按相同的顺序获得锁可以避免一些潜在的死锁。例如如果有两个锁 A 和 B确保所有线程都按照相同的顺序获取这两个锁比如先获取 A再获取 B。2. **使用超时** 在获取锁的时候设置一个超时时间如果超过了这个时间还没获取到锁就放弃或者重新尝试。这样可以避免线程一直等待的情况。3. **使用适当的锁** 在 Python 中threading 模块提供了不同类型的锁包括 Lock、RLock可重入锁、Semaphore信号量等。4. **上下文管理器** 使用 with 语句来管理锁的获取和释放确保在离开 with 代码块时锁会被正确释放。5. **避免锁嵌套** 尽量避免在一个锁的临界区内再去获取其他锁这可能导致死锁。6. **使用锁的层次结构** 如果有多个锁确保它们的层次结构是明确的不同线程按照相同的顺序获取锁。7. **使用 threading.Condition** 如果有复杂的线程间通信和同步需求可以使用 Condition 对象它可以在获取锁的同时等待或唤醒其他线程。8. **使用线程池或进程池** 在一些情况下使用线程池或进程池来管理并行任务而不是直接使用线程或进程可以减少死锁的概率。以上方法并非绝对保证死锁不会发生因为死锁问题可能与具体的业务逻辑和并发操作有关。 在设计时仔细考虑并发情境确保锁的使用是必要的并尽可能简化同步操作。14. lambdy函数和普通函数的区别 Lambda函数和普通函数在Python中有一些区别 1. **语法**- Lambda函数使用lambda关键字定义语法为 lambda arguments: expression。- 普通函数使用def关键字定义语法为 def function_name(arguments):。2. **名称**- Lambda函数是匿名的不需要给予函数名。- 普通函数有一个明确的名称。3. **功能**- Lambda函数通常用于定义简单的、一行的函数而不是复杂的函数。- 普通函数没有长度限制可以包含多条语句适用于更复杂的逻辑。4. **return语句**- Lambda函数的返回值由表达式自动返回不需要使用return语句。- 普通函数通常需要使用return语句来返回值。5. **作用域**- Lambda函数的作用域是在定义的时候就确定的不能修改。- 普通函数的作用域是在运行时确定的。6. **可调用性**- Lambda函数可以用作一个表达式可以作为参数传递给高阶函数如map、filter等。- 普通函数可以作为一个独立的功能块也可以作为参数传递给其他函数。7. **实例**- Lambda函数通常用于一些简单的操作比如排序、过滤等。例如lambda x: x**2 表示计算平方。- 普通函数适用于更复杂的功能可以包含多个语句有明确的名字更易读。# Lambda函数示例 square lambda x: x**2 print(square(4)) # 输出 16# 普通函数示例 def square_function(x):return x**2print(square_function(4)) # 输出 16总的来说Lambda函数适用于一些简单的操作而普通函数更适用于需要多个语句或者 有较复杂逻辑的情况。Lambda函数通常用于函数式编程的场景。15. 简述mysql的事务 MySQL的事务是一组SQL语句它们按照一定的顺序执行形成一个不可分割的工作单元。 在MySQL中事务具有ACID属性即原子性Atomicity、一致性Consistency、隔离性Isolation和持久性Durability。1. **原子性Atomicity**- 原子性确保事务中的所有操作要么全部完成要么全部不完成。- 如果事务在执行过程中发生错误会被回滚Rollback到事务开始前的状态。2. **一致性Consistency**- 一致性保证事务的执行使数据库从一个一致的状态转移到另一个一致的状态。- 如果在事务开始前数据库是一致的那么事务执行后数据库也必须是一致的。3. **隔离性Isolation**- 隔离性指多个事务并发执行的时候每个事务都应该感觉不到其他事务的存在。- 为了隔离事务数据库采用了不同的隔离级别如读未提交Read Uncommitted、读提交Read Committed、可重复读Repeatable Read和串行化Serializable。4. **持久性Durability**- 持久性确保一旦事务提交其改变将永久保存在数据库中即使在系统故障的情况下也不会丢失。在MySQL中通过以下语句来控制事务- **开始事务**START TRANSACTION;- **提交事务**COMMIT;- **回滚事务**ROLLBACK;- **设置保存点Savepoint**SAVEPOINT savepoint_name;- **回滚到保存点**ROLLBACK TO SAVEPOINT savepoint_name;- **释放保存点**RELEASE SAVEPOINT savepoint_name;MySQL默认是自动提交事务的也就是说每个语句都会被当作一个独立的事务执行。 如果需要使用事务可以使用START TRANSACTION语句显式地开始一个事务 然后通过COMMIT提交或者通过ROLLBACK回滚。16. 简述mysql的索引 索引在数据库中是一种用于提高查询效率的数据结构。 它类似于书籍的目录可以让数据库系统快速定位和访问特定的数据行。MySQL支持多种类型的索引下面是一些关键的索引概念 1. **主键索引Primary Key Index**- 主键索引是一种唯一性索引用于唯一标识每一行数据。一个表只能有一个主键索引通常在创建表的时候定义。CREATE TABLE example_table (id INT PRIMARY KEY,name VARCHAR(50));2. **唯一索引Unique Index**- 唯一索引确保列中的所有值都是唯一的但允许有空值。CREATE TABLE example_table (email VARCHAR(255) UNIQUE,name VARCHAR(50));3. **普通索引Normal Index**- 普通索引是最基本的索引类型用于加速数据的查找。可以对表的任何列创建普通索引。CREATE TABLE example_table (id INT,name VARCHAR(50));CREATE INDEX idx_example ON example_table(id);4. **全文索引Full-Text Index**- 全文索引用于在文本数据上进行全文搜索。只有MyISAM和InnoDB存储引擎支持全文索引。CREATE TABLE example_table (id INT,content TEXT,FULLTEXT (content)) ENGINEMyISAM;5. **组合索引Composite Index**- 组合索引是包含多个列的索引。当查询涉及到组合索引的列时组合索引可以提供更好的性能。CREATE TABLE example_table (first_name VARCHAR(50),last_name VARCHAR(50),INDEX idx_name (first_name, last_name));6. **空间索引Spatial Index**- 空间索引用于支持空间数据类型例如Point、LineString等。CREATE TABLE example_table (id INT,location GEOMETRY,SPATIAL INDEX (location));7. **聚簇索引Clustered Index**- 聚簇索引决定了数据在磁盘上的存储顺序表中的数据按照聚簇索引的顺序组织。CREATE TABLE example_table (id INT PRIMARY KEY,name VARCHAR(50)) ENGINEInnoDB;8. **非聚簇索引Non-Clustered Index**- 非聚簇索引不决定数据在磁盘上的存储顺序而是在一个独立的数据结构中存储索引。CREATE TABLE example_table (id INT PRIMARY KEY,name VARCHAR(50)) ENGINEMyISAM;索引的使用要谨慎因为虽然它可以提高查询的速度但也会增加写入操作的成本。过多或不必要的索引 可能导致性能下降。在设计数据库时需要根据具体的查询需求和表的大小选择适当的索引策略。17. mysql中常见的引擎和主要使用场景 在 MySQL 中有多种存储引擎可供选择每种引擎都有其独特的特点和适用场景。以下是几种常见的 MySQL 存储引擎及其主要使用场景 1. **InnoDB**- **特点**- 事务支持InnoDB 提供了 ACID原子性、一致性、隔离性、持久性事务支持。- 行级锁InnoDB 使用行级锁而不是表级锁提高了并发性。- 外键支持支持外键。- 提供了崩溃恢复和故障恢复机制。- **适用场景**- 需要事务支持的应用。- 有大量的写操作或者表中有涉及到外键的关系。2. **MyISAM**- **特点**- 不支持事务。- 表级锁MyISAM 使用表级锁而不是行级锁降低了并发性。- 速度快对于读密集型操作MyISAM 在性能上有一定优势。- 不支持外键。- **适用场景**- 主要进行读操作很少有写操作的场景。- 数据表较小对并发性要求不高。3. **Memory (Heap)**- **特点**- 将表中的数据存储在内存中速度非常快。- 不支持 TEXT 和 BLOB 类型的列。- 表锁。- **适用场景**- 适用于临时表查询频繁但数据变动不频繁的场景。4. **Archive**- **特点**- 压缩存储Archive 存储引擎使用 zlib 算法进行压缩适合存储大量归档数据。- 仅支持 INSERT 和 SELECT 操作不支持 UPDATE、DELETE、INDEX 等操作。- **适用场景**- 归档大量历史数据不需要频繁查询和更新的场景。5. **CSV**- **特点**- 将表存储为逗号分隔值格式。- 不支持索引。- 不支持事务。- **适用场景**- 数据表需要与其他系统进行数据交换。6. **Blackhole**- **特点**- Blackhole 存储引擎实际上并不存储数据只接收数据并将其丢弃。- 用于复制数据到其他服务器的场景。- **适用场景**- 用于数据复制或者数据备份。7. **NDB (NDBCluster)**- **特点**- 集群存储引擎提供分布式存储。- 支持事务和高并发。- 支持内存和磁盘存储。- **适用场景**- 需要高可用性和高并发的场景如分布式数据库。选择合适的存储引擎需要根据应用的具体需求和特点进行评估。 不同的存储引擎适用于不同的场景综合考虑读写比例、事务要求、数据量大小等因素。18. git中如何解决冲突 在 Git 中冲突通常发生在多个分支或多个开发者同时修改了同一文件的同一部分内容时。 当合并分支或者拉取远程更改时如果 Git 无法自动合并修改就会发生冲突。以下是解决 Git 冲突的一般步骤 1. **查看冲突** 在合并或拉取操作中Git 会标识出发生冲突的文件。你可以使用以下命令查看哪些文件有冲突git status这会列出冲突的文件。2. **打开冲突文件** 打开发生冲突的文件你会看到类似以下内容的标记 HEAD本地修改内容远程修改内容 branch-name其中 HEAD 到 之间是你本地的修改 到 branch-name 之间是远程的修改。3. **手动解决冲突** 根据需要手动选择保留本地修改、保留远程修改或者进行修改。删除冲突标记后文件的内容应该是你解决冲突后的最终内容。5. **标记为已解决** 在解决冲突后使用以下命令告诉 Git 冲突已经解决git add filename如果有多个冲突文件可以使用 git add . 将所有文件标记为已解决。6. **完成合并或拉取** 继续合并或拉取操作git merge branch-name或git pull origin branch-name7. **提交合并** 如果你在合并操作中解决了冲突还需要执行提交操作git commit -m Merge branch-name以上是手动解决冲突的一般步骤。在实际开发中可以使用图形化工具如 Git GUI、 Visual Studio Code、SourceTree 等来更直观地解决冲突。 图形化工具通常提供了可视化的界面方便你查看、选择和提交修改。19. python实现算法实现代码全排列 # 使用深度优先 def permute(nums):def dfs(start):if start len(nums):result.append(nums[:])returnfor i in range(start, len(nums)):nums[start], nums[i] nums[i], nums[start]dfs(start 1)nums[start], nums[i] nums[i], nums[start] # 恢复原始状态result []dfs(0)return result# 测试 nums [1, 2, 3] permutations permute(nums) for perm in permutations:print(perm)20. 编程题 给你一个包含 n 个整数的数组 nums判断 nums 中是否存在三个元素 abc 使得 a b c 0 请你找出所有和为 0 且不重复的三元组。注意答案中不可以包含重复的三元组。 示例 1 输入nums [-1,0,1,2,-1,-4] 输出[[-1,-1,2],[-1,0,1]] 示例 2 输入nums [] 输出[] 示例 3 输入nums [0] 输出[]def threeSum(nums):n len(nums)if n 3:return []nums.sort()res []for i in range(n-2):if i 0 and nums[i] nums[i-1]:continueleft i 1right n - 1while left right:total nums[i] nums[left] nums[right]if total 0:res.append([nums[i], nums[left], nums[right]])while left right and nums[left] nums[left1]:left 1while left right and nums[right] nums[right-1]:right - 1left 1right - 1elif total 0:left 1else:right - 1return res21. 给定一个二维数组arr,数组中的元素都是0或1, 素有相邻元素都为1的为连通区域找到最大的连通区域 # 要找到二维数组 arr 中最大的连通区域可以使用深度优先搜索DFS或广度优先搜索BFS的算法来解决 def max_connected_area(arr):if not arr:return 0rows len(arr)cols len(arr[0])max_area 0def dfs(row, col):if row 0 or row rows or col 0 or col cols or arr[row][col] ! 1:return 0area 1arr[row][col] -1 # 标记已访问过的区域为-1# 递归搜索上下左右四个方向area dfs(row - 1, col) # 上area dfs(row 1, col) # 下area dfs(row, col - 1) # 左area dfs(row, col 1) # 右return areafor row in range(rows):for col in range(cols):if arr[row][col] 1:max_area max(max_area, dfs(row, col))return max_area# 示例用法 arr [[1, 1, 0, 0, 0],[1, 1, 0, 0, 1],[0, 0, 1, 1, 0],[0, 0, 0, 1, 1], ] max_area max_connected_area(arr) print(max_area) # 输出5
http://www.pierceye.com/news/283032/

相关文章:

  • 昆明建站网址dw怎么做秋季运动会网站
  • 为什么要建设个人网站在建工程
  • o2o网站设计方案做一个网站只做前端怎么做
  • 长沙网站建设公司联系方式网站注册手机号安全吗
  • 广州市网站建设服务机构建设部网站查资质
  • 医院网站建设思路wordpress mx主题
  • 天津如何做百度的网站虚拟机做局域网网站服务器
  • 网站建设维护需要懂哪些知识网站建设优质公司
  • 怎么做网络彩票网站校园网站建设经费申请报告
  • 廊坊公司做网站一般网站图标是用什么做的
  • php网站开发文档模板玖壹购网站是做啥子的
  • 海报模板网站有哪些小程序电商平台排名
  • 百度一下百度网站苏州优秀网站设计企业
  • 通信管理局网站备案cms网站建设的实训总结
  • 西安知名网站建设公司百度网页版微信
  • 单纯python能完成网站开发吗门户网站衰落的原因
  • 唐山微网站建设价格宁波外贸网站推广优化
  • 如何能把网站做的更大赤峰网站建设赤峰
  • 织梦大气绿色大气农业能源化工机械产品企业网站源码模版网站设计是用ps做图吗
  • 长沙建设网站公司浙江网站建设上市公司
  • 成都艾邦视觉专业网站建设公司有内涵大气的公司名字
  • 制作学校网站编程基础知识大全
  • 建设银行网站买手机阿里云已备案域名购买
  • 12个优秀的平面设计素材网站wordpress 标题 拼音
  • 瑶海区网站建设公司上海app开发定制公司
  • 北海建设厅网站局域网的电脑怎么做网站服务器
  • 莱芜网站建设价格域名注册成功后怎么使用网站
  • 衡阳县建设局网站wordpress 图片缓存
  • 浙江门户网站建设公司新闻稿发布
  • 温州网站建设排名wordpress 汉化失败