python - leetcode【数据结构-算法】-入门/通关手册

news2024/11/22 20:08:26

python的算法入门/通关/手册

  • 前言:
  • 算法通关手册(LeetCode)-github
  • Hello 算法:
  • python数据结构和算法 - 中文版
  • The Algorithms - Python
  • 最后
    • 刷题思维:
  • python-leetcode刷题常用语法:
    • 变量定义:
    • 逻辑与或非和按位与或非异或
      • 逻辑运算:
      • 按位运算
      • 基本语法
      • 常用函数
      • 高级语法
      • 常用循环及判断语句

前言:

因为笔者马上要去面试了,正在刷leetcode,同时准备着与leetcode相关的python知识点。所以这里找到了几个github上几个相关的python - leetcode知识点帖子:

算法通关手册(LeetCode)-github

算法通关手册(LeetCode)
在这里插入图片描述

算法通关手册电子书地址
在这里插入图片描述
作者介绍:

我是一名 iOS / macOS 的开发程序员,另外也是北航软院的一名非全硕士(在读)。曾在大学期间学习过算法知识,并参加过 3 年的 ACM 比赛, 但水平有限,未能取得理想成绩。但是这 3 年的 ACM 经历,给我最大的收获是锻炼了自己的逻辑思维和解决实际问题的能力,这种能力为我今后的工作、学习打下了坚实的基础。

我从 2021 年 03 月 30 日开始每日在 LeetCode 刷题,到 2022 年 06 月 08 日已经刷了 1000+ 道题目,并且完成了 800+ 道题解。努力向着 1000+、1500+、2000+ 道题解前进。

Hello 算法:

Hello 算法官网

  • 本项目旨在打造一本开源免费、新手友好的数据结构与算法入门教程。
  • 全书采用动画图解,内容清晰易懂、学习曲线平滑,引导初学者探索数据结构与算法的知识地图。
  • 源代码可一键运行,帮助读者在练习中提升编程技能,了解算法工作原理和数据结构底层实现。
  • 鼓励读者互助学习,提问与评论通常可在两日内得到回复。
    在这里插入图片描述
    在这里插入图片描述

python数据结构和算法 - 中文版

通过python解决算法和数据结构问题
在这里插入图片描述

The Algorithms - Python

几个印度小哥,在GitHub上建了一个各种Python算法的新手入门大全,现在标星已经超过2.6万。这个项目主要包括两部分内容:一是各种算法的基本原理讲解,二是各种算法的代码实现。

传送门:https://github.com/TheAlgorithms/Python?tab=readme-ov-file
在这里插入图片描述

最后

其实主要就是介绍上面两个和python相关的算法帖子。剩下的自己还找了一些中文python知识点帖子以便刷题自用:

Python学习笔记
【Python 和 LeetCode 】Python 基础|LeetCode 算法知识点总结 | 刷LeetCode笔记 | 整理中。。。
LeetCode刷题必知的Python知识
Python 必知必会知识点
python基础语法——常量、变量、注释、输入输出和运算符
python教程

刷题思维:

  1. 理解题意(经验与知识),单步运行(测试提供的样例),抽象化(类似于用公式解决一类题)
  2. 编程(对所用语言及API的理解,各种语言的基础知识点)
  3. 测试、边界情况:边界输入输出,数组有没有越界,死循环,资源释放
  4. 优化:方向(运行很慢的原因是什么?是算法?抽象还是别的什么)

python-leetcode刷题常用语法:

变量定义:

  1. 整数(Integer):

    age = 30
    
  2. 浮点数(Float):

    pi = 3.14
    
  3. 字符串(String):

    empty_string = str()
    empty_string = ""
    name = "Alice"
    
  4. 布尔值(Boolean):

    is_student = True
    
  5. 列表(List):

    empty_list = list()
    empty_list = []
    fruits = ["apple", "banana", "cherry"]
    
  6. 元组(Tuple):

    empty_tuple = tuple()
    empty_tuple = ()
    coordinates = (10.0, 20.0)
    
  7. 字典(Dictionary):

    empty_dict = dict()
    empty_dict = {}
    person = {"name": "Alice", "age": 30}
    
  8. 集合(Set):

    empty_set = set()
    unique_numbers = {1, 2, 3}
    
  9. 空值(None):

    value = None
    

逻辑与或非和按位与或非异或

在Python中,&|^用于按位运算,而不是逻辑运算。要进行逻辑操作,你必须使用 andornot

逻辑运算:

  • 与 (and):

    a = True
    b = False
    result = a and b  # 结果是False
    
  • 或 (or):

    a = True
    b = False
    result = a or b  # 结果是True
    
  • 非 (not):

    a = True
    result = not a  # 结果是False
    

按位运算

  1. 按位与操作 (&): result = a & b 按位与操作对每一对相应的位执行与操作。
a = 5  # 二进制:0101
b = 3  # 二进制:0011
result = a & b  # 结果是1,二进制:0001
print(result)  # 输出:1
  1. 按位或操作 (|) : result = a | b按位或操作对每一对相应的位执行或操作。
a = 5  # 二进制:0101
b = 3  # 二进制:0011
result = a | b  # 结果是7,二进制:0111
print(result)  # 输出:7
  1. 按位非操作 (~):result = ~a 按位非操作对每一个位取反。
a = 5  # 二进制:0101
result = ~a  # 结果是-6,二进制表示为:...11111010(在Python中,按位非会取反并加1)
print(result)  # 输出:-6
  1. 按位异或操作 (^):result = a ^ b按位异或操作对每一对相应的位执行异或操作。
a = 5  # 二进制:0101
b = 3  # 二进制:0011
result = a ^ b  # 结果是6,二进制:0110
print(result)  # 输出:6

基本语法

  1. 变量与数据类型
    • 整数、浮点数、字符串、列表、字典、集合、元组等。
  2. 列表操作
    • 创建:lst = [1, 2, 3]
    • 添加元素:lst.append(4)
    • 插入元素:lst.insert(1, 10)
    • 删除元素:lst.remove(2)del lst[1]
    • 切片:sublist = lst[1:3]
  3. 字典操作
    • 创建:d = {'a': 1, 'b': 2}
    • 添加/更新:d['c'] = 3
    • 删除:del d['a']
    • 遍历:for key, value in d.items():
  4. 集合操作
    • 创建:s = {1, 2, 3}
    • 添加:s.add(4)
    • 删除:s.remove(2)
  5. 条件与循环
    • 条件:if, elif, else
    • 循环:for, while

常用函数

  1. 内置函数
    • len(): 获取长度
    • sum(): 求和
    • max(), min(): 最大值和最小值
    • sorted(): 排序
    • reversed(): 反转
  2. 列表推导式
    squares = [x**2 for x in range(10)]
    
  3. 枚举与迭代
    • enumerate(): 获取索引和值
    • zip(): 并行迭代
  4. 字符串操作
    • 分割:s.split()
    • 拼接:' '.join(lst)
    • 替换:s.replace('a', 'b')
  5. 数学与算法
    • math 模块:math.sqrt(), math.factorial()
    • collections 模块:Counter, defaultdict
    • itertools 模块:permutations, combinations
  6. 变量交换值:
    x, y = y, x
    

高级语法

  1. 变量定义
    # 直接声明变量
    x = 5 
    name = "Alice"
    
    x = None  # 初始声明为None
    x = 10  # 之后再赋值	
    
    name: str = "Alice" 
    age: int = 25
    a, b, c = 1, 2, 3 # 同时声明多个变量
    
  2. 函数定义
    def my_function(x):
        return x + 1
    
  3. Lambda 表达式
    add = lambda x, y: x + y
    
  4. 异常处理
    try:
        # 代码块
    except Exception as e:
        print(e)
    
  5. 类与对象
    class MyClass:
        def __init__(self, value):
            self.value = value
    
  6. 返回多个类型的值
    def get_multiple_values():
    	num = 42
     	text = "Hello"
    	lst = [1, 2, 3]
    	return num, text, lst
    
    number, message, list_values = get_multiple_values()
    print(number)       # 输出:42
    print(message)      # 输出:"Hello"
    print(list_values)  # 输出:[1, 2, 3]
    

常用循环及判断语句

  1. If-Else : if elif else
    x = 10
    if x > 5:
    	print("x is greater than 5")
    elif x == 5:
    	print("x is 5")
    else:
    	print("x is less than 5")
    
  2. For Loop
    # 遍历列表
    numbers = [1, 2, 3, 4, 5]
    for num in numbers:
    	print(num)
    
    # 遍历字典
    dictionary = {'a': 1, 'b': 2}
    for key, value in dictionary.items():
    	print(f"{key}: {value}")
    
    # 使用 range
    for i in range(5):
    	print(i)
    
  3. While Loop
    count = 0
    while count < 5:
    	print(count)
    	count += 1
    
  4. 嵌套循环
    matrix = [
    	[1, 2, 3],
    	[4, 5, 6],
    	[7, 8, 9]
    ]
    
    for row in matrix:
    	for value in row:
        	print(value)
    
  5. 简洁的if条件表达式
    x = 10
    result = "greater than 5" if x > 5 else "5 or less"
    
  6. 生成列表的简洁方式:
    # 创建一个包含1到10的平方的列表
    squares = [x**2 for x in range(1, 11)]
    
  7. 使用breakcontinue
  • break:用于提前退出循环。

  • continue:跳过当前迭代,继续下一次循环。

    for num in range(10):
    	if num == 5:
        	break  # 提前退出循环
    	if num % 2 == 0:
        	continue  # 跳过偶数
    	print(num)
    

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

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

相关文章

使用 Flask 和 ONLYOFFICE 实现文档在线编辑功能

提示&#xff1a;CSDN 博主测评ONLYOFFICE 文章目录 引言技术栈环境准备安装 ONLYOFFICE 文档服务器获取 API 密钥安装 Flask 和 Requests 创建 Flask 应用项目结构编写 app.py创建模板 templates/index.html 运行应用功能详解文档上传生成编辑器 URL显示编辑器回调处理 安全性…

EasyUI弹出框行编辑,通过下拉框实现内容联动

EasyUI弹出框行编辑&#xff0c;通过下拉框实现内容联动 需求 实现用户支付方式配置&#xff0c;当弹出框加载出来的时候&#xff0c;显示用户现有的支付方式&#xff0c;datagrid的第一列为conbobox,下来选择之后实现后面的数据直接填充&#xff1b; 点击新增&#xff1a;新…

C# 选择导入文件的路径、导出文件的路径

通过C#代码&#xff0c;调出windows风格的文件选择对话框和存储文件对话框。提供界面来选择文件的位置&#xff0c;并将完整路径以字符串形式返回。 1、选择导入文件&#xff0c;获取其路径 C#通过这段代码将弹出一个文件选择对话框&#xff0c;允许用户选择一个文件&#xff…

数据结构-并查集专题(1)

一、前言 因为要开始准备年底的校赛和明年年初的ACM、蓝桥杯、天梯赛&#xff0c;于是开始按专题梳理一下对应的知识点&#xff0c;先从简单入门又值得记录的内容开始&#xff0c;并查集首当其冲。 二、我的模板 虽然说是借用了jiangly鸽鸽的板子&#xff0c;但是自己也小做…

二手交易平台测试用例设计和执行

&#x1f384;欢迎来到边境矢梦的csdn博文&#x1f384; &#x1f384;追求开源思想和学无止境思想一直在提升技术的路上 &#x1f384; &#x1f308;涉及的领域有&#xff1a;Java、Python、微服务架构和分布式架构思想、基本算法编程&#x1f308; &#x1f386;喜欢的朋友可…

计算机图形学论文 | 多边形中的点可见性快速算法

&#x1f98c;&#x1f98c;&#x1f98c;读论文 &#x1f428;&#x1f428;摘要 针对点的可见性计算这一计算几何中的基础问题&#xff0c;提出一种支持任意查询点的可见多边形快速计算的基于多边形Voronoi图的点可见性算法。以与Voronoi骨架路径对应的Voronoi通道概念&…

Redis 高并发分布式锁实战

目录 环境准备 一 . Redis 安装 二&#xff1a;Spring boot 项目准备 三&#xff1a;nginx 安装 四&#xff1a;Jmeter 下载和配置 案例实战 优化一&#xff1a;加 synchronized 锁 优化二&#xff1a;使用 redis 的 setnx 实现分布式锁 优化三&#xff1a;使用 Lua 脚本…

LLM大模型学习精华系列:VLLM性能优化部署实践——全面加速从推理到部署的流程

训练后的模型会用于推理或者部署。推理即使用模型用输入获得输出的过程&#xff0c;部署是将模型发布到恒定运行的环境中推理的过程。一般来说&#xff0c;LLM的推理可以直接使用PyTorch代码、使用[VLLM]等框架&#xff0c;也可以使用[llama.cpp]等c推理框架。 常见推理方法 G…

【大数据学习 | kafka高级部分】kafka的快速读写

1. 追加写 根据以上的部分我们发现存储的方式比较有规划是对于后续查询非常便捷的&#xff0c;但是这样存储是不是会更加消耗存储性能呢&#xff1f; 其实kafka的数据存储是追加形式的&#xff0c;也就是数据在存储到文件中的时候是以追加方式拼接到文件末尾的&#xff0c;这…

SpringCloud篇(微服务)

目录 一、认识微服务 1. 单体架构 2. 分布式架构 3. 微服务 3.1. 特点 3.2. 优点 3.3 缺点 二、微服务设计、拆分原则 1. AKF 拆分原则 2. Y轴&#xff08;功能&#xff09;关注应用中功能划分&#xff0c;基于不同的业务拆分 3. X轴&#xff08;水平扩展&#xff09…

Hive简介 | 体系结构

Hive简介 Hive 是一个框架&#xff0c;可以通过编写sql的方式&#xff0c;自动的编译为MR任务的一个工具。 在这个世界上&#xff0c;会写SQL的人远远大于会写java代码的人&#xff0c;所以假如可以将MR通过sql实现&#xff0c;这个将是一个巨大的市场&#xff0c;FaceBook就这…

高校宿舍信息管理系统小程序

作者主页&#xff1a;编程千纸鹤 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参…

森林防火责任大于天,可视化监控大屏让隐患无处遁形。

在大自然的生态系统中&#xff0c;森林是地球之肺&#xff0c;为我们提供着清新的空气、丰富的资源和优美的环境。然而&#xff0c;森林火灾却如同一场可怕的灾难&#xff0c;随时可能摧毁这片宝贵的绿色财富。森林防火责任大于天&#xff0c;而可视化监控大屏的出现&#xff0…

“穿梭于容器之间:C++ STL迭代器的艺术之旅”

引言&#xff1a; 迭代器&#xff08;Iterator&#xff09;是C STL&#xff08;标准模板库&#xff09;中非常重要的一部分&#xff0c;它提供了一种统一的方式来遍历容器中的元素。无论容器是数组、链表、树还是其他数据结构&#xff0c;迭代器都能够以一致的方式访问这些数据…

el-scrollbar 动态更新内容 鼠标滚轮无效

有以下功能逻辑&#xff0c;实现了一个时间轴组件&#xff0c;点击、-号后像地图那样放大组件以显示不同的UI。 默认显示年月&#xff1a; 当点击一下加号时切换为年&#xff1a; 当点击减号时切换为日&#xff1a; 即加号、减号点击就是在年月日显示进行切换。给Scrollvie…

Linux【基础篇】

-- 原生罪 linux的入门安装学习 什么是操作系统&#xff1f; 用户通过操作系统和计算机硬件联系使用。桥梁~ 什么是Linux&#xff1f; 他是一套开放源代码&#xff08;在互联网上找到Linux系统的源代码&#xff0c;C语言写出的软件&#xff09;&#xff0c;可以自由 传播&…

C++类(5)

1.<<和>>操作符重载 我们该如何重载操作符<<和>>呢&#xff1f; 如果在类里面&#xff0c; void operator<<(ostream& out) {out << _year << "年" << _month << "月" << _day <&l…

【MM-Align】学习基于输运的最优对齐动力学,快速准确地推断缺失模态序列

代码地址 - > github传送 abstract 现有的多模态任务主要针对完整的输入模态设置&#xff0c;即每个模态在训练集和测试集中要么是完整的&#xff0c;要么是完全缺失的。然而&#xff0c;随机缺失的情况仍然没有得到充分的研究。在本文中&#xff0c;我们提出了一种新的方…

高精度算法-保姆级讲解

目录 1.什么是高精度算法 2.高精度加法 3.高精度减法 4.高精度乘法 5.高精度除法 &#xff08;高精度除以低精度&#xff09; 6.高精度阶乘&#xff08;n个低精度数相乘&#xff09; 1.什么是高精度算法 高精度算法&#xff08;High Accuracy Algorithm&#xff09;是…

vue大疆建图航拍功能实现

介绍 无人机在规划一块区域的时候&#xff0c;我们需要手动的给予一些参数来影响无人机飞行&#xff0c;对于一块地表&#xff0c;无人机每隔N秒在空中间隔的拍照地表的一块区域&#xff0c;在整个任务执行结束后&#xff0c;拍到的所有区域照片能够完整的表达出一块地表&…