作为要准备踏入码农行业的人来说,要准备校招,怎么能不去刷刷LeetCode呢?
1. 两数之和
- 题目要求:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 - 示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
- 分析:
访问两边数组,第一遍用target-num[i],第二遍找target-num[i]是否存在nums,找到就返回这两个组成的数字。
class Solution:
def twoSum(self,num,target):
for i in range(0,len(num)):
a =target-num[i]
if a in num:
y =num.index(a)
if i == y:
continue
else:
return i,y
break
else:
continue
7. 整数反转
- 题目要求:
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 - 示例:
输入: 123
输出: 321
输入: -123
输出: -321
输入: 120
输出: 21
注意:设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2××31, 2××31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
- 分析:
根据提示的注意,首先判断范围,再按正负数依次判断。通过取余数反转数字。
class Solution:
def twoSum(self,num,target):
for i in range(0,len(num)):
a =target-num[i]
if a in num:
y =num.index(a)
if i == y:
continue
else:
return i,y
break
else:
continue
9. 回文数
-
题目要求:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 -
示例:
输入: 121
输出: true
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
- 分析:
方法一:根据题目7整数反转进行解题
class Solution:
def isPalindrome(self,x):
"""
:rtype: bool
"""
if(x<0):
return False
else:
renum = 0
t = x
while(t!=0):
renum = renum*10+t%10
t = t//10
if(renum == x):
return True
else:
return False
方法二 以字符串的形式进行前后对应位置的比较判断
class Solution:
def isPalindrome(self,x):
"""
:rtype: bool
"""
if(x<0):
return False
else:
y = str(x)
z = []
for i in y:
z.append(i)
for t in range(0,len(z)//2):
if(z[t]!=z[len(z)-1-t]):
return False
return True