Python学习计划-力扣·「新」动计划 · 编程入门题库(一)

Tracksail
2025-11-12
点 赞
0
热 度
6
评 论
0

前言

长期以来,我主要专注于前后端交互和系统相关内容的研究,已有相当一段时间未涉足算法领域。自认并非天赋异禀之人,因此借助本学期开设的Python课程,在学习这门编程语言的同时,也计划重新温习一下算法知识。

基础语法 & 数据类型

两整数相加

题目:

解题:


class Solution:
    def sum(self, num1: int, num2: int) -> int:
        return num1 + num2

温度转换

题目:

解题:


class Solution:
    def convertTemperature(self, celsius: float) -> List[float]:
        kelvin = celsius + 273.15
        fahrenheit = celsius * 1.8 + 32.00
        return [kelvin,fahrenheit]
        

条件判断

最小偶倍数

题目:

解题:


class Solution:
    def smallestEvenMultiple(self, n: int) -> int:
        if n%2==0:
            return n
        else:
            return 2*n

判断根节点是否是子节点之和

题目:
给你一个 二叉树 的根结点 root,该二叉树由恰好 3 个结点组成:根结点、左子结点和右子结点。

如果根结点值等于两个子结点值之和,返回 true ,否则返回 false

示例 1:


输入:root = [10,4,6]
输出:true
解释:根结点、左子结点和右子结点的值分别是 10 、4 和 6 。
由于 10 等于 4 + 6 ,因此返回 true 。

示例 2:


输入:root = [5,3,1]
输出:false
解释:根结点、左子结点和右子结点的值分别是 5 、3 和 1 。
由于 5 不等于 3 + 1 ,因此返回 false 。

解题:


# Definition for a binary tree node.
class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
class Solution:
    def checkTree(self, root: Optional[TreeNode]) -> bool:
        if root.val == root.right.val + root.left.val:
            return True
        else:
            return False

循环&循环嵌套

数组异或操作

题目:
给你两个整数,nstart

数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length

请返回 nums 中所有元素按位异或(XOR)后得到的结果。

示例 1:


输入:n = 5, start = 0
输出:8
解释:数组 nums 为 [0, 2, 4, 6, 8],其中 (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8 。
     "^" 为按位异或 XOR 运算符。

示例 2:


输入:n = 4, start = 3
输出:8
解释:数组 nums 为 [3, 5, 7, 9],其中 (3 ^ 5 ^ 7 ^ 9) = 8.

示例 3:


输入:n = 1, start = 7
输出:7

示例 4:


输入:n = 10, start = 5
输出:2

提示:

  • 1 <= n <= 1000

  • 0 <= start <= 1000

  • n == nums.length

解题:


class Solution:
    def xorOperation(self, n: int, start: int) -> int:
        num = 0
        for i in range(0,n):
            num ^= start + 2*i
        return num

好数对的数目

题目:

给你一个整数数组 nums

如果一组数字 (i,j) 满足 nums[i] == nums[j]i < j ,就可以认为这是一组 好数对

返回好数对的数目。

 

示例 1:

输入:nums = [1,2,3,1,1,3]
输出:4
解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始

示例 2:

输入:nums = [1,1,1,1]
输出:6
解释:数组中的每组数字都是好数对

示例 3:

输入:nums = [1,2,3]
输出:0

 

提示:

  • 1 <= nums.length <= 100

  • 1 <= nums[i] <= 100

解题:


#暴力解法
class Solution:
    def numIdenticalPairs(self, nums: List[int]) -> int:
        num = 0
        for i in range(0,len(nums)):
            for j in range(i+1,len(nums)):
                if nums[i] == nums[j]:
                    num+=1
        return num
#字典
class Solution:
    def numIdenticalPairs(self, nums: List[int]) -> int:
        cnt = {}
        ans = 0
        for i in nums :
            ans += cnt.get(i,0) #获取i在cut里面出现的次数
            cnt[i] = cnt.get(i,0) + 1 #将当前出现的数次数加1
        return ans

统计好三元组

给你一个整数数组 arr ,以及 abc 三个整数。请你统计其中好三元组的数量。

如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件,则认为它是一个 好三元组

  • 0 <= i < j < k < arr.length

  • |arr[i] - arr[j]| <= a

  • |arr[j] - arr[k]| <= b

  • |arr[i] - arr[k]| <= c

其中 |x| 表示 x 的绝对值。

返回 好三元组的数量

 

示例 1:

输入:arr = [3,0,1,1,9,7], a = 7, b = 2, c = 3
输出:4
解释:一共有 4 个好三元组:[(3,0,1), (3,0,1), (3,1,1), (0,1,1)] 。

示例 2:

输入:arr = [1,1,2,2,3], a = 0, b = 0, c = 1
输出:0
解释:不存在满足所有条件的三元组。

 

提示:

  • 3 <= arr.length <= 100

  • 0 <= arr[i] <= 1000

  • 0 <= a, b, c <= 1000


class Solution:
    def countGoodTriplets(self, arr: List[int], a: int, b: int, c: int) -> int:
        ans = 0
        for i in range(0,len(arr)):
            for j in range(i+1,len(arr)):
                for k in range(j+1,len(arr)):
                    if abs(arr[i] - arr[j])<=a and abs(arr[j] - arr[k])<=b and abs(arr[i] - arr[k])<=c :
                        ans +=1
        return ans

ASCII 码

转换成小写字母

题目:

给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。

 

示例 1:

输入:s = "Hello"
输出:"hello"

示例 2:

输入:s = "here"
输出:"here"

示例 3:

输入:s = "LOVELY"
输出:"lovely"

 

提示:

  • 1 <= s.length <= 100

  • s 由 ASCII 字符集中的可打印字符组成

解题:


class Solution:
    def toLowerCase(self, s: str) -> str:
        return s.lower()

s.upper()全大写
s.lower()全小写
s.capitalize()首字母大写
s.title()每个单词首字母大写
s.swapcase()大小写互换


用键盘敲击出的不只是字符,更是一段段生活的剪影、一个个心底的梦想。希望我的文字能像一束光,在您阅读的瞬间,照亮某个角落,带来一丝温暖与共鸣。

Tracksail

intj 建筑师

站长

具有版权性

请您在转载、复制时注明本文 作者、链接及内容来源信息。 若涉及转载第三方内容,还需一同注明。

具有时效性

文章目录

欢迎来到SailTrack的站点,为您导航全站动态

14 文章数
8 分类数
1 评论数
7标签数