LeetCode简单题合集 python

1672. 最富有客户的资产总量

tips: sum函数可以直接用~

class Solution:
    def maximumWealth(self, accounts: List[List[int]]) -> int:
        maxSum=0  #记录下最大值
        for a in accounts:  #遍历每个客户
            if sum(a)>maxSum:  #当前客户资产总和大于记录的最大值
                maxSum=sum(a)
        return maxSum

1920. 基于排列构建数组

class Solution:
    def buildArray(self, nums: List[int]) -> List[int]:
        return [nums[i] for i in nums]  # 这一句话解决问题

1. 两数之和

tips: 通过这个题可以 get 到字典的妙用,python中字典就是一种哈希结构,编程中用起来时间复杂度也比较低。

形象解释:(这个题就像是找老伴儿哈哈哈~~~)
   列表中的每个人心里都知道自己的老伴儿应该是谁(如果target=8,当前这个数是2,它知道自己需要找到的是6)。
  所以当遍历到这个人身上的时候,他就会去查一下字典,看看老伴儿在字典里吗,如果在,那这道题就结束了;
  如果不在,那他就先把自己放到字典中(他的值是字典中独一无二的key),乖乖等着他的老伴儿来找他。

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        hashtable=dict()  # 创建一个字典
        for i,num in enumerate(nums): # 遍历数组nums,每当遇到一个数num时
            if target-num in hashtable: # 如果老伴儿(target-num)就在字典中 
                return [hashtable[target-num],i] # 问题结束,返回他俩各自的位置
            else:  # 老伴儿不在字典中
                hashtable[num]=i  # 那就把自己的信息以key(本身值大小)、value(下标位置)的形式存到字典中,等着他的老伴儿来找他
##### 二刷时的写法 #######
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        # 字典能很好的直接访问到,哪个元素在,哪个元素不在,而且还能帮你存放一个附加的value值
        map_dict = {
   }  # 数值:下表
        for i, num in enumerate(nums):
            if target-num in map_dict:
                return [i, map_dict[target-num]]
            else:
                map_dict[num] = i

9. 回文数

class Solution:
    def isPalindrome(self, x: int) -> bool:
        x_str=str(x)  #把x转化成字符串
        x_ver_str=''.join(reversed(x_str))  #用''.join(reversed(str))这个方式求逆序字符串
        if x_str==x_ver_str:
            return True
        else:
            return False

13. 罗马数字转整数

用两个字符组合代表数字的就那6个特例('IV,‘IX’,‘XL’,‘XC’,‘CD’,‘CM’),字符串中的每个字符要么就是跟后边字符形成特例,不然的话那就是单独自己代表一个数字。(所以只需要走一遍字符串,看看每个字符跟后边是否能组合,不能组合就单独累加)

class Solution:
    def romanToInt(self, s: str) -> int:
        mapDict={
   
            'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000,
            'IV':4,'IX':9,'XL':40,'XC':90,'CD':400,'CM':900
        }
        countSum=0
        i=0
        while i<=len(s)-1: # 直到最后一位
            if i+1<=len(s)-1: # 如果后边有数
            # 取出这两个字母,看看是不是特例里中的
                if s[i:i+2] not in mapDict.keys(): # 两位组合的不在,那只能单独成数
                    countSum+=mapDict[s[i]] #直接由s[i]这个字符在字典中定位到其值
                    i+=1 #指针后移一位
                else:
                    countSum+=mapDict[s[i:i+2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值