前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用leetcode学习Python

用leetcode学习Python

作者头像
stormwen
发布2019-08-05 11:28:22
9490
发布2019-08-05 11:28:22
举报
文章被收录于专栏:公众号:googpy公众号:googpy

之前一直分享Python的入门的知识,今天想和大家分享一些适合入门小白的题目,学习语言这个东西,我觉得没什么捷径,当具备一定的基础知识,只有通过题目巩固基础知识,不断的写代码。

我从leetcode上找了一些适合初学者的题目,大家和我一起刷一下,看看自己的基础知识有没有打扎实。

1.比如自然数10以下能被3或者5整除的有3,5,6,9,那么这些数字的和为23,现在求能被3或者5整除的1000以内数字的和。

代码语言:javascript
复制
print(sum([i for i in range(1,100) if i%3==0 or i%5==0]))
代码语言:javascript
复制
2318

代码解析:大家看我写的代码,用列表推导式一行代码就可以搞定,当然如果有不熟悉列表推导的可以看我前面写的文章,此外,代码中还用到两个内置函数——sum和range。

2.在一个数组中,移除指定的数字,并返回新的数组并从大到小排序,比如:

代码语言:javascript
复制
nums=[1,6,6,3,6,2,10,2,100],remove_num=6

要求返回时

代码语言:javascript
复制
nums=[1,2,3,10,100]

我写的代码是这样的:

代码语言:javascript
复制
list1 = list(filter(lambda n:n!=6,[1,6,6,3,6,2,10,2,100]))

print(sorted(list1))

代码解析:这行代码中有之前学到的匿名函数lambda,以及filter函数用于过滤掉不要的值,最后再用一个内置函数list,将元组转换成列表。最后再用内置函数sorted函数将新的列表从大小排序。

3.从排序好的任意数组列表里面删除重复元素(列表中元素数量未知)比如:

代码语言:javascript
复制
nums=[1,3,3,5,5,8,10,10,100,100]
#处理完之后是:[1,3,5,8,10,100]
代码语言:javascript
复制
nums = [1,3,3,5,5,8,10,10,100,100]

print(sorted(set(nums)))

代码解析:首先可以用比较容易记忆的内置函数set来实现,Python中set函数的作用是创建一个无序不重复元素集,可进行关系测试,删除重复数据。但我们也可以看出来,用set得到的结果是无序的,所以,最后需要用sorted函数排序一下就可以了。

当然,也可以按照下面代码中这种方法实现,这种方法得到的结果也是无序的,最后也需要用sorted函数排序一下。

代码语言:javascript
复制
nums1 = {}.fromkeys(nums).keys()

print(sorted(nums1))
代码语言:javascript
复制
[1, 3, 5, 8, 10, 100]

4.从排好序的数组里面,删除重复的元素,重复的数字最多能出现2次。

nums=[1,1,1,2,2,5],要求返回nums=[1,1,2,2,3]

我写的代码如下:

代码语言:javascript
复制
from collections import Counter

def question4(nums):
    print(Counter(nums))
    for k,v in Counter(nums).items():
        if v >2:
            nums.remove(k)

    print(nums)

question4([1,1,1,2,2,3])
代码语言:javascript
复制
Counter({1: 3, 2: 2, 3: 1})
[1, 1, 2, 2, 3]

代码解析:因为要统计单个元素出现的次数,所以需要用到Counter函数,它的作用是在一个数组内,遍历所有元素,将元素出现的次数记下来,接着用for in遍历每一个元素,最后用内置函数remove移除出现次数大于2的数字。

5.给定2个字符串s1,s2,判定s2能否给s1做循环移位得到字符串的包含。比如:

代码语言:javascript
复制
s1='AABBCD',s2='CDAA'

代码解析:构建辅助字符串,利用额外的空间,根据这个思路,我写了两种不同函数,可以实现功能,代码如下:

代码语言:javascript
复制
def problem5(src_str,des_str):
    new_str = src_str +src_str
    if des_str in new_str:
        return True
    else:
        return False

print(problem5('AABBCD','CDAA'))
代码语言:javascript
复制
def problem5():
    s1 = 'AABBCD'
    s2 = 'CDAA'
    s3 = s1 + s1

    if (len(s3) > len(s2)):
        print(s3.find(s2))
        return True
    else:
        print(s2.find(s3))
        return False

print(problem5())

在写的第二种代码种,先构建辅助字符串,然后用len函数统计字符串的长度,与s2相比较,最后返回预期的值。这里需要提到find函数,它的作用是检测字符串中是否包含子字符串str,如果包含子字符串返回开始的索引值,否则返回-1。

今天的实战题目就这么多,我写的代码有时候很简洁,如果你的基础知识不扎实,就不一定看的懂,所以,我一直觉得学习语言,一定要在前期打好基础,把基础语法学扎实了,才能盖高楼。大家看完我写的代码后,最好自己再敲一遍,切莫眼高手低,有好的解法,欢迎一起交流学习。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 googpy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档