LeetCode刷题总结-Easy篇(不间断更新中)

今天你刷了吗?

英文有句谚语叫做:“An apple a day, keeps doctor away!”

换在这里就是“A problem a day, makes coding away!”

1、Two Sum
给定一个整数列表和一个目标值,列表中两个数相加为目标值,返回这两个数的下标。

解法
暴力求解,依次遍历即可。

“哈希表”,将列表元素看做是key,将列表的下标看做是hashcode,自然而然的我们会将列表的元素转化到一个hash table中,但是这里就有一个很cool的事情,可以一边生成,然后一边检查,这样就不需要遍历所有元素了。所以,解法被叫做“One-pass Hash Table”。

7、Reverse Integer
反转一个整数,整数的边界是32-bit。

解法
就像反转一个字符串一样,利用取余和整除10来,将个位数、十位数和百位数。。。等依次‘pop’出来,然后再‘push’在新数字的末尾。有点像stack,但又不是。需要注意的是数值的边界(-2147483648~2147483647),也就是2的31次方。

9、Palindrome Number
判断一个整数是不是回文,就是前后念都一样。而且不能用转成字符串的办法。

解法
翻转一半即可,结合上面那个反转整数的方法,把目标数字反转一半即可。比如‘12321’,拆分为‘12’和‘321’,然后把‘321’反转为‘123’,此时比较12和int(123/10)即可。非常棒的算法。

14、Longest Common Prefix
寻找一些字符串的最大“公约数”,从你开头算起。

解法
一个解法是设置两个指针,遍历。
另一个比较聪明的是将这些字符串排序,这样只需要比较第一个和最后一个字符串即可。

20、Valid Parentheses
合法的括号

解法
这个题目我很早前被面试过,当时不会,主要是没有一个stack数据结构的概念。
利用stack的LIFO,将满足要求的括号“pop”掉,看最后剩下的结果即可。

21、Merge Two Sorted Lists
合并两个排序好的链表。

解法
这个地方没啥特殊要说的,利用链表的知识,不断遍历即可。注意指针的位置。
不过在Python中倒是有个None的用法值得留意。

26、Remove Duplicates from Sorted
不让重新创建列表,然后去除列表中重复的值,并返回去重后列表的长度。

解法
依然是两个指针,一个遍历列表元素;另一个就指向那些不重复的值的位置,这样就用合适的值替换了重复了值。相当于是“挤掉”了那些重复的值。
“挤掉”的操作适合不记录不符合要求的这样情况。因为被挤掉的值没有价值了。

你可能感兴趣的:(LeetCode刷题总结-Easy篇(不间断更新中))