最近时间准备面试,开始在leetcode上刷题了。于是在segmentfault上写点东西来记录下。可能会有各种弱智情况,望指出。
- Array Partition I
题意:这个题目看原题实在没有看懂,在网上找的翻译,大致意思是给你一个长度为2n的数组,讲数组分为长度为2的子数组,求子数组里面最小值的和。
思路:把数组按顺序排列,然后直接取键值为偶数的值求和即可
代码:
class Solution(object):
def arrayPairSum(self, nums):
nums.sort()
sum=0
for i in range(len(nums)):
if i%2==0:
sum+=nums[i]
return sum
- Reshape the Matrix
题意:给定一个二维数组与数组的行列数(r和c),将数组转化为一维数组再转换成指定的格式的数组,如果无法转换则返回原来的数组
思路:先判断输入的r与c的值能否满足转换条件,然后再进行转换,在网上找过参考,发现参考的一个答案没有考虑过r和c的值,其实总长度等于r*c即满足条件,不用再求r的值
代码:
class Solution(object):
def matrixReshape(self, nums, r, c):
ad=[]
if len(nums)*len(nums[0])!=r*c:
return nums
else:
for i in nums:
for k in i:
ad.append(k)
lst=[]
for j in range(r):
lst.append(ad[j*c:(j+1)*c])
return lst
Hamming Distance
题意:给定两个指定范围内的数,将两个数转化为二进制,二进制不同位数即为汉明距离。
思路:将两个数用bin()转换为二进制(需要去除前面的bin),因为位数不同所以需要在前面补充一定位数的0,然后将两个字符串遍历就可以直接得到汉明距离
代码: `
python
class Solution(object):
def hammingDistance(self, x, y):
a=bin(x)[2:]
b=bin(y)[2:]
minus=abs(len(a)-len(b))
s=0
if len(a)>len(b):
b="0"*minus+b
elif len(a)<len(b):
a="0"*minus+a
for i in range(0,len(a)):
if a[i]!=b[i]:
s=s+1
return(s)