我的LeetCode刷题想法 LeetCode#1 Python解

今天看过一些视频和博客之后,我决定换个方法刷题:
LeetCode 1~150号题目按顺序刷下去。
自己动手,十分钟想不出来解法就看讨论区,向优秀的同学学习,理解之后自己敲一遍,再在这里从题目分析到解答整个过一遍(代码再敲一遍)。
在这里插入图片描述
这道题我完全是暴力求解,两重循环。
看了其他同学的方法,有只用一个循环的,用字典的,也有用hashmap的。我目前还完全不懂hashmap,但觉得用一重循环和字典都比较容易理解,所以就写一下一重循环和字典的解法:
1、一重循环

#一重循环,就是检验target减去第一个数的结果是否在nums中:
def twoSum(self, nums: List[int], target: int) -> List[int]:
	n = len(nums)
	for x in range(n):
		y = target - x
		if y in nums:
			return [x,nums.index(y)]
			break
		else:
			continue
#写着写着,发现有个问题:当y=nums[x]时就出错啦
#比如测试用例[2,2,4] 4就通不过
#之后再来解决吧...

此外,还学会了一个方法enumerate()
enumerate(sequence, [start=0])
参数:sequence – 一个序列、迭代器或其他支持迭代对象。
start – 下标起始位置。

ss = ['gaga','xixi','haha']
for i,j in enumerate(ss):
	print i, j
#结果输出:
0 gaga
1 xixi
2 haha

2、字典

#字典
#这段是在VSCode里面编辑的,不是很理解为什么输出的时候i要放在后面
#以及那个else的写法
dict1 = {}
n = len(nums)
for i in range(n):
    #dict1[nums[i]] = i
    if target - nums[i] in dict1:
        print(dict1[target-nums[i]],i)
    else:
        dict1[nums[i]] = i

3、哈希
通过这个解法也了解了一点哈希表的相关知识

hashmap = {}
for i,num in enumerate(nums):#i是下标,num是值
    if hashmap.get(target - num) is not None:
        print([hashmap.get(target - num),i])
    hashmap[num] = i         

今日感想:
如果解题有段位:
青铜:暴力
白银:稍微优化
黄金:多种解法
王者:解法多样,考虑全面,题解表述清晰易懂

而我,不会玩游戏…
照这个速度…我何时能够刷完剩下的149题??

要完全弄懂一道题,真难,今天这题可能80%吧?…
这也反映了我的性格,从来都是 “差不多就得了”
我晕!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值