3个月用python刷完leetcode600题!-简单篇(一)
在最近的面试中,一遇到数据结构和算法的题,自己总是不能回答的很好,所以下定决心刷一下leetcode,从简单的开始,慢慢迈入算法的无底洞,fighting!
对于每一道题,我都会先自己想,然后去测试,最后会查看讨论区中比较不错的python代码粘贴下来,进行整理,下面是我的代码链接:
代码github链接:https://github.com/princewen/leetcode_python
1、第1题:two sum
题目描述:
题目描述这道题目的要求是给定一个数组和一个目标值,判断数组中是否有两个数的和等于目标值,简单的思想是循环套循环,这样的时间复杂度是o(n2),有没有一次遍历就可以得到结果的方法,我想到了python的字典,用数组中元素的值作为健,用元素的索引作为值进行存储,依次遍历数组中的每个数,查看距离目标值的差值在字典中是否有记录,如果有记录,则返回两个元素的下标,如果没有记录,该元素进入字典中,继续遍历。代码如下:
第一题思路网上给出的思路跟我的差不多,所以这里就不多做介绍了,第一题顺利解决,也算开了一个好头吧!加油!
2、第7题:Reverse Integer
题目要求如下图:
第7题描述第七题就是要将一个整数逆序,思路很简单,每次将x除10,然后把%10的结果放在前面,哎呀,语言描述的感觉很乱,但是大家肯定都懂啦,最好要判断是否溢出,一开始并没有考虑这个条件,所以没有通过测试:
代码如下:
3、第九题:Palindrome Number
这题要求判断是否是回文数,题目要求如下:
Determine whether an integer is a palindrome. Do this without extra space.
这里的要求不要利用其他的space有点模糊,所以自己没有想到很好的方法,后来学习了一下网上给出的思路,首先得到给出的x是一个几位数,然后每次判断当前x的第一位和最后一位是否相同,最后去掉x的前后两位,继续判断。代码如下:
第九题代码作为系列的第一篇,今天就先写这么多吧,如果大家对leetcode感兴趣,欢迎跟小编进行交流,小编微信为,加我要写好备注哟!:
我的微信