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

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

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.kler.cn/a/387521.html

相关文章:

  • 【Rust】控制流
  • opencv的NLM去噪算法
  • 跨境电商领域云手机之选:亚矩阵云手机的卓越优势
  • Windows安装ES单机版设置密码
  • RocketMQ 知识速览
  • IMX6ULL的IOMUXC寄存器和SNVS复用寄存器似乎都是对引脚指定复用功能的,那二者有何区别?
  • Rust移动开发:Rust在iOS端集成使用介绍
  • 搭子小程序定制开发:全新找搭子之旅
  • 计算机网络之物理层
  • Rust:启动与关闭线程
  • Java 中的 Supplier:让数据生成更灵活
  • 设计模式学习总结(一)
  • 【VScode】Html+Css+JavaScript学习计划表
  • 【论文阅读笔记】Mamba模型代码理解
  • 电子电气架构--- 实施基于以太网的安全车载网络
  • QCustomPlot添加自定义的图例,实现隐藏、删除功能(二)
  • Linux【基础篇】
  • C# 通俗易懂的介绍基础知识(七)——栈Stack(从日常生活开始讲解)
  • WordPress 2024主题实例镜像
  • 『VUE』22. 组件传递数据props(详细图文注释)
  • Spark的学习-02
  • 微积分复习笔记 Calculus Volume 1 - 4.10 Antiderivatives
  • Pr 视频过渡:沉浸式视频 - VR 色度泄漏
  • #渗透测试#SRC漏洞挖掘# 操作系统-Linux系统之病毒防护
  • 《JVM第8课》垃圾回收算法
  • 软考:论DevOps