easy part
1.两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
class Solution(object): def twoSum(self, nums, target): lens=len(nums) index_list = [] for i in range(lens): for j in range(i+1, lens): if(nums[i] + nums[j]== target ): index_list.append(i) index_list.append(j) print(list(index_list)) return index_list
list( tup ) tup -- 要转换为列表的元组。表示返回列表。
*set([元组]、字符串) --创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。 Eg: set('123123') {'3', '1', '2'}
2.整数反转
给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。
输入:x = 123
输出:321
目的:得到’x‘的末尾数字。使用取模运算。
这里要注意负数和模取余不能是0,所以while(x!=0)即可。12345 1234 123 12 1 --》 5 54 543 5432 54321。注意:x÷10的写法:x//=10。
# 完成反转功能:
class Solution: def reverse(self, x: int) -> int: res=0 temp=0 while(x!=0): temp=x%10 res=res*10+temp x//=10 return res
**范围:**假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。
最大的32位整数:2^32=2147483647,反转后的数字若大于2^32是没法存到int里面的,因此需要返回0(表示溢出)。这里需要判断①正数范围:>214748364或=214748364且%后>7 ②负数范围:<-214748364 或 =-214748364 且%<-8。
class Solution: def reverse(self, x: int) -> int: res=0 temp=0 while(x!=0): temp=x%10 #判断是否 大于 最大32位整数 if res>214748364 or (res==214748364 and tmp>7): return 0; #判断是否 小于 最小32位整数 if res<-214748364 or (res==-214748364 and tmp<-8): return 0; res=res*10+temp x//=10 return res
3.回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
class Solution: def isPalindrome(self, x: int) -> bool: # 回文数 res=0 if x<0: return False x1=abs(x) while(x1!=0): temp=x1%10 x1=int(x1/10) res=res*10+temp if x==res: return True else: return False
4.罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如,27 写做 XXVII, 即为 XX + V + II 。
给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。
输入: "III"
输出: 3
class Solution: def romanToInt(self, s: str) -> int: # 构建字典IV 4 note = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000} ans=0 for i in range(len(s)): if i<len(s)-1 and note[s[i]] < note[s[i+1]]: ans -= note[s[i]] else: ans += note[s[i]] return ans