目录
1、两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例1
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
解法:暴力解法
拿数组里的第一个数字和后面的数字分别相加,看是否等于target;如果不等于target,那么就继续拿数组里的第二个数字和后面的数字相加;不停的去一个个试...直到等于target,返回这2个数字所在的下标
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
for i in range(len(nums)):
for j in range(i+1, len(nums)):
if nums[i] + nums[j] == target:
return [i, j]
if __name__ == '__main__':
s = Solution()
print(s.twoSum([ 2,7,11,15], 9))
7、整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例
输入:x = 123
输出:321
输入:x = -123
输出:-321
解法:判断正负号,存储在sign中,然后对绝对值数字逐位运算
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
if x > 0:
sign = 1
else:
sign = -1
x = abs(x)
answer = 0
while x > 0:
answer = answer * 10 + x % 10
x = x // 10
t = answer * sign
if t > 2**31 or t < -2 ** 31:
return 0
else:
return t
if __name__ == '__main__':
s = Solution()
print(s.reverse(289))
9、回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
示例
输入:x = 121
输出:true
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
解法:先判断正负,如果是负数的话直接返回false,