【python力扣刷题经验分享】——从初入力扣到上分变强!!!

 一,初入力扣

 1.特殊的输入

欢迎各位旅行者们,力扣的做题方式与其他的刷题平台不一样,你会遇到如下几种形式。

这些均是官方定义的,如果你不够了解def,class,或者english。只能静静的看着,不过不要慌张,可以按照以下步骤来攻略他们。

2.了解def

 def 关键字,你可以定义一个函数并指定函数的名称、参数以及函数体内的操作。以下是一个简单的函数定义示例:

def greet(name):
    print("Hello, " + name + "!")

# 调用函数
greet("Alice")

在这个示例中,def 关键字用于定义了一个名为 greet 的函数,该函数接受一个参数 name,然后在函数体内打印出一条问候语。你可以通过调用 greet("Alice") 来使用这个函数并传递参数 "Alice"

函数定义的一般形式如下:

def function_name(parameters):
    # 函数体
    # 执行操作
    return value

也就是说,在力扣

  • twoSum 是函数的名称,表示这个函数的作用是找到数组中两个数的和等于目标值的索引。
  • (self, nums: List[int], target: int) 是函数的参数列表。在这里:
    • self 是指向对象实例的引用,通常在类中定义方法时会用到,表示对象本身。在做题时,大部分都没什么用。
    • nums: List[int] 表示参数 nums 是一个整数列表,函数将在这个列表中查找两个数的和等于目标值。“:”后面的是提示,不是一个实际的参数。
    • target: int 表示参数 target 是一个整数,表示目标值。“:”后面的是提示,不是一个实际的参数。
  • -> List[int] 表示函数的返回类型是一个整数列表。这意味着这个函数将返回一个包含两个数的索引的整数列表,这两个数的和等于目标值。(做题时几乎用不上)

总结——就是nums,target已经给你了,且已经赋好值了,不用你来完成输入,你只需要对nums和target进行操作,最后return “答案” 就可以了。如果还不了解可以刷
1. 两数之和 - 力扣(LeetCode)

2.计算列车到站时间

感受熟悉一下。

3.了解class

  • def __init__(self, val=0, next=None)::这是 ListNode 类的构造函数,用来初始化链表节点对象。在这个构造函数中:

    • self 是指向对象实例的引用。

    • val=0 表示节点的值,默认为0。这个值通常存储节点中的数据。

    • next=None 表示指向下一个节点的指针,默认为 None。这个指针用来构建链表结构,将当前节点连接到下一个节点。

  • self.val = val:这一行代码将构造函数中传入的 val 参数赋值给当前节点对象的 val 属性。

  • self.next = next:这一行代码将构造函数中传入的 next 参数赋值给当前节点对象的 next 属性。这样就可以将当前节点与下一个节点连接起来。

我知道,刚学习python的友友们看不懂,这里涉及到了类与对象的知识。找篇文章好好研究一下吧!(其实我也讲不清楚)

ps:力扣中的这类问题加上def来递归起来,就要具体问题具体分析了,建议多做一些简单题,看不懂就看题解,一点一点print看看定义出来的规律。

3.了解特殊定义题

这类题型是官方已经定义好了的,需要了解他的意思和题目给出的设定。看不懂就研究题解。

4.多刷简单题,“定义”题

刷题时首选简单的,通过率高的,当你觉得了解差不多了,就去找一找其他类型的定义题,轻车熟路之后,恭喜你终于到16冒险等级了!!!

二,从新人到新兵(不断变强!)

1.参加周赛!参加周赛!参加周赛!

力扣每两周都会有一场双周赛,每周都会有一场周赛。(感受一下大佬的支配!)

每次竞赛的下周四会出竞赛分,它是来判断你能力和水平的方法。

2.刷符合自己难度分段的题

这里就不得不提到力扣的一位史诗级大佬,@bilibili灵茶山艾府(题讲得好,声音也十分好听)

每次周赛,双周赛。灵神都会直播讲解,直播录像也会放到b站里。

回归正题——这位大佬的关于如何科学上分(来自与b站灵茶山艾府)就讲到了,练习刷分变强的方法。此图文中包含了两个链接,可以显示出竞赛题的分数,竞赛题合集及其分数段。可以依靠其来提升自己不断变强!!!

3.一些其他的工具和小技巧

        1.无所不能的ai

将题目复制粘贴给ai,极有可能帮你做出来(当然不能作弊!!!不能偷懒!!!)。

还可以帮你转码,比如这道题只有cpp的答案或者解析,你可以将代码复制粘贴给ai并告送它要转换的语言。

还可以给你讲解你看不懂的代码。

        2.将做出来的题,写出思路

这就跟高中刷题写题路一样,它会让你更加了解接触这道题的所需要的方法,并且以后回过头来看时会有成就感。

以上是我在力扣的一些经验和感悟,如果有不对的地方,望指正。

以后我会更新一些python的基础知识,语法和做题时的小方法和技巧(努力一周一更,毕竟我也还是个小菜鸡^.^)

### Python LeetCode Practice Problems and Solutions #### Example Problem: Subsets (LeetCode 78) A common problem encountered when practicing algorithms with Python on LeetCode involves generating all possible subsets of a given set of distinct integers. The provided code snippet demonstrates an effective method for solving this issue through backtracking. ```python from typing import List class Solution: def subsets(self, nums: List[int]) -> List[List[int]]: def backtrack(first=0, curr=[]): # If the combination is completed if len(curr) == k: output.append(curr[:]) return for i in range(first, n): # Add nums[i] into the current combination curr.append(nums[i]) # Use next integers to complete the combination backtrack(i + 1, curr) # Backtrack curr.pop() output = [] n = len(nums) for k in range(n + 1): backtrack() return output ``` This implementation uses recursion alongside iteration to explore every potential subset while maintaining efficiency[^3]. When approaching such problems, one should consider multiple approaches ranging from brute-force methods to more optimized ones. For instance, discussing alternative strategies can include mentioning how another approach might offer trade-offs between time and space complexities[^2]. For example, instead of using backtracking, one could also implement iterative logic based on bit manipulation or dynamic programming principles depending upon specific constraints mentioned within each challenge description. In addition to mastering these techniques, participating actively in online communities dedicated to coding challenges like Stack Overflow or Reddit's r/learnprogramming forums provides valuable insights as well as opportunities for collaborative learning experiences where individuals share their knowledge freely under open-source values[^1].
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值