leetcode-python 第十一周
来源:互联网 发布:平湖市行知小学教师表 编辑:程序博客网 时间:2024/05/12 08:42
每天坚持做题不容易,虽然很多题目都是参考别人的思维,但是我想做过总会有印象的,像dfs这种东西刚开始不熟,后面写多了就知道个大概模式了,自己加油吧!!!
1. Top K Frequent Elements [55ms]
# 方法1:自己写的哈希表,因为不知道get函数,所以sort出来的是元组,还需要后面的计算,超时# 方法2:参考dicuss用get方法,大数据量不超时class Solution(object): def topKFrequent(self, nums, k): """ :type nums: List[int] :type k: int :rtype: List[int] """ hashTable = {} for i in nums: if i not in hashTable.keys(): hashTable[i] = 1 else: hashTable[i] += 1 sortK = sorted(hashTable.items(), key=lambda d: d[1], reverse=True) print(sortK) ans = [] for i in range(len(sortK[:k])): ans.append(sortK[i][0]) return ansclass Solution(object): def topKFrequent(self, nums, k): """ :type nums: List[int] :type k: int :rtype: List[int] """ hashTable = {} for num in nums: if num in hashTable: hashTable[num] += 1 else: hashTable[num] = 0 ans = sorted(hashTable, key=hashTable.get, reverse=True) return ans[:k]
2. String to Interger(atoi) [80ms]
# 方法1:首先要过滤掉开始的空格和0# 然后在判断符号和过滤中间的空格和0# 如果遇到符号就要判断后面的数# 最后溢出检测class Solution(object): def myAtoi(self, str): """ :type str: str :rtype: int """ if len(str) < 1: return 0 sign = 1 i = 0 ans = 0 while str[i] == " " or str[i] == "0": i += 1 if str[i] == "-": sign = -1 i += 1 elif str[i] == "+": i += 1 else: while str[i] == " " or str[i] == "0": i += 1 while (i < len(str)) and (str[i] in "0123456789"): ans = ans * 10 + int(str[i]) i += 1 if sign * ans > 2**31 - 1: return 2**31 - 1 elif sign * ans < -2**31: return -2**31 else: return sign * ans
3.Find the Difference [72ms]
# 方法1:哈希表class Solution(object): def findTheDifference(self, s, t): """ :type s: str :type t: str :rtype: str """ d = {} for i in s: if i not in d.keys(): d[i] = 1 else: d[i] += 1 for j in t: if j in d.keys(): d[j] -= 1 if d[j] == 0: del d[j] else: return j for i in d.keys(): return d[i]
4.Implement strStr() [68ms]
# 方法1:双指针法,其实总共用了三个指针class Solution(object): def strStr(self, haystack, needle): if len(needle) == 0: return 0 ans = -1 for h in range(len(haystack) - len(needle) + 1): if haystack[h] == needle[0]: nn = 1 n = h + 1 while nn < len(needle): if haystack[n] == needle[nn]: nn += 1 n += 1 else: break if nn == len(needle): ans = h break return ans
5.Intersection of Two Array [45ms]
# 方法1:哈希表 [89ms]# 方法2:参考discuss的two pointer,先移动到相同的位置# 再判断ans是否为空或者是可行解 [45ms]class Solution(object): def intersection(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: List[int] """ ans = [] if len(nums1) == 0 or len(nums2) == 0: return ans hashTable = {} for i in nums1: if str(i) not in hashTable.keys(): hashTable[str(i)] = 1 for j in nums2: if str(j) in hashTable.keys(): ans.append(j) del hashTable[str(j)] return ansclass Solution(object): def intersection(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: List[int] """ ans = [] nums1.sort() nums2.sort() i = j = 0 while i < len(nums1) and j < len(nums2): if nums1[i] > nums2[j]: j += 1 elif nums1[i] < nums2[j]: i += 1 else: if len(ans) == 0 or nums1[i] != ans[-1]: ans.append(nums1[i]) i += 1 j += 1 return ans
6.Reverse String [64ms]
# 方法1:自己写的双指针# 方法2:用内置方法比自己写的快多了class Solution(object): def reverseString(self, s): """ :type s: str :rtype: str """ tmp = list(s) low, high = 0, len(s) - 1 while low < high: tmp[low], tmp[high] = tmp[high], tmp[low] low += 1 high -= 1 return "".join(tmp)class Solution(object): def reverseString(self, s): """ :type s: str :rtype: str """ s = list(s) s.reverse() return "".join(s)
7.Single Number [52ms]
# 方法1:利用异或运算class Solution(object): def singleNumber(self, nums): """ :type nums: List[int] :rtype: int """ for i in range(1, len(nums)): nums[0] ^= nums[i] return nums[0]
0 0
- leetcode-python 第十一周
- leetcode-第十一周
- 第十一周LeetCode
- 第十一周LeetCode
- 第十一周LeetCode
- LeetCode题解 第十一周
- 第十一周LeetCode算法题两道
- 补第十一周Leetcode 博客
- leetcode-python 第一周
- leetcode【第十一周】旋转链表
- 第十一周:[Leetcode]474. Ones and Zeroes
- 第十一周:[Leetcode]139. Word Break
- 第十一周 leetcode 135. Candy(Hard)
- Leetcode 392.Is Subsequence(第十一周作业)
- leetcode-python 第十周
- leetcode-python 第十四周
- 第十一周
- 第十一周
- Yii2 windows 安装步骤
- 适配器模式——拥抱合伙人
- linux之ls只显示文件或者文件夹
- hdu 1159 最长公共子序列
- 自定义View之渐变色圆形进度条
- leetcode-python 第十一周
- poj 3067
- C语言基础--编写风格1
- 编程的智慧,如何编写简单优雅的代码
- Hust oj 1637 水神与Linux(KMP)
- 学习、探究Java设计模式——观察者模式
- 黑客笔记进阶
- Flask Web 开发 番外篇_关于扩展引入的坑
- Xcode下运行HelloWorld cocos2dx