LeetCode 刷题笔记(简单-1)

1、两数之和
暴力解法

7、整数反转
ans = … if …else …
整数范围: -1<<31至(1<<31)-1

9、回文数
[::-1]

13、罗马数字转整数
使用字典
左减右加

14、最长公共前缀

s = ''
        if len(strs)>0:
            for i, n in enumerate(strs[0]):
                for j in range(1, len(strs)):
                    if i<= (len(strs[j])-1) and n == strs[j][i]:
                        continue
                    else:
                        return s
                s += n
            return s
        else:
            return s

20、有效的括号
初步想法使用栈,之后看了别人的代码,发现使用字典定义后再使用栈最简洁

28、实现strStr()
python最简单的做法:return haystack.find(needle)

35、搜索插入位置
若target在nums中:直接使用index
若target不在nums中:

nums.append(target)
            nums.sort()
            return nums.index(target)

38、报数
题目有些难理解,自己写不出来,看了别人的代码,也没看懂

class Solution:
    def countAndSay(self, n):
        """
        :type n: int
        :rtype: str
        """
        nn='1'	
        for i in range(n-1):
            a=[]
            c=[]
            for i in nn:
                if len(c)==0:
                    c.append(i)
                    a.append(c)
                else:
                    if c[-1]==i:
                        c.append(i)
                    else:
                        c=[i]
                        a.append(c)
            nn=''
            for i in a:
                nn+=str(len(i))+i[0]				
        return nn

53、最大子序和
当sum<0时,sum=0
为符合仅有唯一负数的情况,将max_sum初始化为nums[0]

58、最后一个单词的长度
使用split()进行切片,再返回[-1]

66、加一

res = 0
        c = []
        num = len(digits)
        digits[-1] += 1
        for i in range(1, num+1):
            res += digits[i - 1] * pow(10, num - i)
        return list(map(int, str(res)))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值