您好,欢迎访问代理记账网站
移动应用 微信公众号 联系我们

咨询热线 -

电话 15988168888

联系客服
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

LeetCode 【双周赛】61

第一题
比较简单
第二题
看上去简单,其实有点难顶

        if len(changed) % 2 != 0 or len(changed)==0:
            return []
        changed.sort() 
        N = len(changed)
        renum = []
        for j in range(N):
            #print(j)
            if changed[j] == None:  # 0与None的效果一致
                continue 
            elif changed[j]*2 in changed :  # 这个是可迭代对象
                #print(changed[0])
                changed[changed.index(changed[j]*2)] = None
                renum.append(changed[j]) 
                #print(renum)
            elif changed[j]*2 not in changed and len(renum) < N/2 :
                return []
        return renum

在这里插入图片描述

		# 排序 + 查找
        # 1. 将原数组按从小到大排序
        num = sorted(changed)
        # 存奇数
        list1 = {}
        out = []
        list2 = {}
        # 2. 开始遍历有序后的数组
        for i in range(len(num)):
            # 2.1. 如果是奇数
            if num[i] % 2 != 0:
                # 2.1.1. 奇数则一定是原数组内的元素,所以直接存入哈希表内
                if num[i] not in list1:
                    list1[num[i]] = 1
                else:
                    list1[num[i]] += 1
            # 2.2. 如果是偶数
            else:
                # 2.2.1. 偶数则需要考虑其一半的元素在不在奇数哈希表内,
                #        同时需要注意其一半的元素在奇数哈希表内的个数不能为0
                #        为0则代表无法与该元素匹配
                if num[i]//2 in list1 and list1[num[i]//2] != 0:  # 在哈希表中的次数不为0
                    list1[num[i]//2] -= 1
                    out.append(num[i]//2)
                # 2.2.2. 去偶数哈希表内找有没有其一半的元素,
                #        同样也需要判断个数是不是为0
                elif num[i]//2 in list2 and list2[num[i]//2] != 0:  # 在list2 中
                    # 2.2.2.1. 同样次数减一,存入输出数组
                    list2[num[i]//2] -= 1
                    out.append(num[i]//2)
                # 2.2.3. 都没有找到,则表明该元素应当是原数组的元素,所以存入偶数哈希表
                else:
                    if num[i] not in list2:
                        list2[num[i]] = 1
                    else:
                        list2[num[i]] += 1
        # 3. 判断奇数和偶数哈希表所有元素是否为0
        if (list1 and max(list1.values())!= 0) or (list2 and max(list2.values())!= 0) :
            # 3.1. 不为0 则表示有未匹配的,所以返回空
            return []
        return out

看一个哈希表的操作
在这里插入图片描述

有点像之前做的一个动态规划的题
2种解法
一种是堆
参考链接

另外一种是动态规划
参考链接
在这里插入图片描述

第4题
在这里插入图片描述

参考解法1:
参考链接
在这里插入图片描述

参考解法2


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进