Leetcode按类型
数学
总结
负数的python数学操作
1
2
3
4
5
6
7
| 在python这个神奇的语言里,负数取模和负数地板除和其他语言是不一样的。
需要把取模替换成%(-val)
把地板除替换成int(x / val)
ans += (x % 10) if x>0 else (x%-10)
x = x // 10 if x>0 else int(x/10)
|
✅7.整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| 示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
|
1
2
3
| num = 123
num_reverse = num//100 + (num%100//10)*10 + (num%100%10)*100
num_reverse
|
2️⃣
2️⃣ (1.5h)
✅ (30m) 7. 整数反转
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| class Solution:
def reverse(self, x: int) -> int:
string = list(str(x))
if string[0] == '-':
string.pop(0)
ans = 0
# print (string)
for i in range(len(string)):
ans = int(string[i])*10**i + ans
ans = -ans
else:
ans = 0
# print (string)
for i in range(len(string)):
ans = int(string[i])*10**i + ans
if ans<-2**31 and ans>2**31-1: return 0
return ans
|
1
2
3
4
5
6
7
8
9
10
| # m数学法
class Solution:
def reverse(self, x):
ans = 0
while (x != 0):
pop = x % 10
ans = ans * 10 + pop
x = x//10
return ans
|
1
2
3
4
5
6
| from typing import List
nums = 123
solution = Solution()
result = solution.reverse(nums)
result
|
🚩4. 寻找两个正序数组的中位数
给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。
请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
你可以假设 nums1 和 nums2 不会同时为空。
1
2
3
4
5
6
7
8
9
10
11
12
13
| 示例 1:
nums1 = [1, 3]
nums2 = [2]
则中位数是 2.0
示例 2:
nums1 = [1, 2]
nums2 = [3, 4]
则中位数是 (2 + 3)/2 = 2.5
|
2️⃣
1
| class Solution: def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:
|
1
| nums1 = [1, 2]nums2 = [3, 4]solution = Solution()result = solution.findMedianSortedArrays(nums1,nums2)result
|