【力扣:新动计划,编程入门 —— 题解 ①】
向前看,总会有新的故事值得期盼
—— 25.1.21
2235. 两整数相加
给你两个整数
num1
和num2
,返回这两个整数的和。示例 1:
输入:num1 = 12, num2 = 5 输出:17 解释:num1 是 12,num2 是 5 ,它们的和是 12 + 5 = 17 ,因此返回 17 。示例 2:
输入:num1 = -10, num2 = 4 输出:-6 解释:num1 + num2 = -6 ,因此返回 -6 。
class Solution:
def sum(self, num1: int, num2: int) -> int:
return num1 + num2
2469. 温度转换
给你一个四舍五入到两位小数的非负浮点数
celsius
来表示温度,以 摄氏度(Celsius)为单位。你需要将摄氏度转换为 开氏度(Kelvin)和 华氏度(Fahrenheit),并以数组
ans = [kelvin, fahrenheit]
的形式返回结果。返回数组
ans
。与实际答案误差不超过10-5
的会视为正确答案。注意:
开氏度 = 摄氏度 + 273.15
华氏度 = 摄氏度 * 1.80 + 32.00
示例 1 :
输入:celsius = 36.50 输出:[309.65000,97.70000] 解释:36.50 摄氏度:转换为开氏度是 309.65 ,转换为华氏度是 97.70 。示例 2 :
输入:celsius = 122.11 输出:[395.26000,251.79800] 解释:122.11 摄氏度:转换为开氏度是 395.26 ,转换为华氏度是 251.798 。
class Solution:
def convertTemperature(self, celsius: float) -> List[float]:
ans = [celsius + 273.15, celsius * 1.80 + 32.00]
return ans
2413. 最小偶倍数
给你一个正整数
n
,返回2
和n
的最小公倍数(正整数)。示例 1:
输入:n = 5 输出:10 解释:5 和 2 的最小公倍数是 10 。示例 2:
输入:n = 6 输出:6 解释:6 和 2 的最小公倍数是 6 。注意数字会是它自身的倍数。
注:
1.range(stop)
:生成一个从 0
开始,到 stop
结束(但不包括 stop
)的整数序列。
2.range(start, stop)
:生成一个从 start
开始,到 stop
结束(但不包括 stop
)的整数序列。
3.range(start, stop, step)
:生成一个从 start
开始,到 stop
结束(但不包括 stop
)的整数序列,每次递增 step
。step
不能为 0
,否则会引发 ValueError
。
class Solution:
def smallestEvenMultiple(self, n: int) -> int:
num = 2
for i in range(n, 2 * n + 1):
if i % 2 == 0 and i % n == 0:
return i
2236. 判断根结点是否等于子结点之和
给你一个 二叉树 的根结点
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 。提示:
- 树只包含根结点、左子结点和右子结点
-100 <= Node.val <= 100
# 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.left.val + root.right.val:
return True
else:
return False
1486. 数组异或操作
给你两个整数,
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;当两个操作数的对应位相同时,结果为 0。
- 对于单个二进制位的异或运算,其规则可以总结为:0 ^ 0 = 0,0 ^ 1 = 1,1 ^ 0 = 1,1 ^ 1 = 0。
- 对于多个二进制位的整数,异或运算按位进行。
① 自反性:对于任意整数a
,有a ^ a == 0
。例如4 ^ 4的结果为0
。这是因为相同的数在二进制表示下,每一位都相同,异或运算的规则是相同为0
,不同为1
,所以结果为0
② 与0的运算性质:对于任意整数a
,有a ^ 0 == a
。例如7 ^ 0
的结果为7
。因为0
的二进制表示中每一位都是0
,与a
进行异或运算时,a
的每一位都保持不变,所以结果就是a
本身。
③ 奇偶性判断:可以通过对一个整数的二进制表示中1
的个数进行异或运算来判断其奇偶性。如果1
的个数为奇数,那么该数为奇数;如果1
的个数为偶数,那么该数为偶数。这是因为异或运算具有 “相同为0
,不同为1
” 的特性,对二进制位进行异或操作可以统计1
的个数的奇偶性
④ 对特定值的连续异或规律:对同一个值进行连续的异或运算会呈现出一定的规律。例如,对一个整数a
连续与另一个整数b
进行异或运算:a ^ b ^ b ^ b ^... ^ b
(b
出现偶数次),最终结果还是a
;如果b
出现奇数次,最终结果为a ^ b
class Solution:
def xorOperation(self, n: int, start: int) -> int:
res = 0
for i in range(n):
res ^= (start + i * 2)
return res