1.两数之和
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
solution:
基本思路是:两个循环,第一遍从i=0下标开始,第二遍从i+1开始
class Solution:
def twoSum(self,nums, target):
for i in range(len(nums)):
for j in range(i+1,len(nums)):###这样做降低时间复杂度
if(nums[i]+nums[j]==target):
return i,j;
7.反转整数
给定一个 32 位有符号整数,将整数中的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0
思路:进行分类,首先是为0时设为0 ,二是判断小于0还是大于0,这里要设置flag,三是当末尾为0时,先对其整除,然后就是利用取模对整数进行反转。
class Solution:
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
if(x==0):
return 0
out = 0;
flag = 1;
if(x<0):
flag = -1
x*=-1;
while(x%10==0):
x//=10;
while(x>0):
out = (out*10)+(x%10)
x//=10
if(out*flag>math.pow(2,31)-1 or out*flag<math.pow(2,31)*-1):
return 0
return out*flag
9. 回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121 输出: true
示例 2:
输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。
思路:
将int类型转为str,再转为list,利用list的reverse()将字符串反转,再将反转后的字符串转为int,与原int对比,相等则为true,同样的要分类考虑。
class Solution:
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
if x<0:
return 0==1
if x%10 ==0 and x !=0:
return 0==1
b = list(str(x))
b.reverse()
new_x = int(''.join(b))
if x==new_x:
return x==new_x
else:
return 0==1