前言
长期以来,我主要专注于前后端交互和系统相关内容的研究,已有相当一段时间未涉足算法领域。自认并非天赋异禀之人,因此借助本学期开设的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
循环&循环嵌套
数组异或操作
题目:
给你两个整数,n 和 start 。
数组 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 <= 10000 <= start <= 1000n == 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 <= 1001 <= 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 ,以及 a、b 、c 三个整数。请你统计其中好三元组的数量。
如果三元组 (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 <= 1000 <= arr[i] <= 10000 <= 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 ansASCII 码
转换成小写字母
题目:
给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。
示例 1:
输入:s = "Hello"
输出:"hello"
示例 2:
输入:s = "here"
输出:"here"
示例 3:
输入:s = "LOVELY"
输出:"lovely"
提示:
1 <= s.length <= 100s由 ASCII 字符集中的可打印字符组成
解题:
class Solution:
def toLowerCase(self, s: str) -> str:
return s.lower()s.upper()全大写
s.lower()全小写
s.capitalize()首字母大写
s.title()每个单词首字母大写
s.swapcase()大小写互换
默认评论
Halo系统提供的评论