leetcode刷题笔记(1)(python)

最近时间准备面试,开始在leetcode上刷题了。于是在segmentfault上写点东西来记录下。可能会有各种弱智情况,望指出。

  1. 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
  1. 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)
    原文作者:王鑫
    原文地址: https://segmentfault.com/a/1190000011344218
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞