leetcode-python 第一周
来源:互联网 发布:wmf榨汁机 知乎 编辑:程序博客网 时间:2024/06/06 06:39
LeetCode Online Judge
https://leetcode.com/
LeetCode题解
https://github.com/soulmachine/leetcode
1.Two Sum [2968ms]
#思路1:暴力[5804ms]#思路2:哈希[2968ms]class Solution(object): def twoSum(self, nums, target): result = [] for i in range(len(nums)): for j in range(i+1, len(nums)): if nums[i] + nums[j] == target: result.append(i) result.append(j) return resultclass Solution(object): def twoSum(self, nums, target): result = [] hashtable = {} for i in range(len(nums)): hashtable[str(nums[i])] = i for j in range(len(nums)): tmp = str(target - nums[j]) if tmp in hashtable.keys() and hashtable[tmp] != j: result.append(j) result.append(hashtable[tmp]) return sorted(result)
2.Remove Duplicates from Sorted Array [108ms]
#思路1:j代表已经确实符合题目的索引,更新前自增class Solution(object): def removeDuplicates(self, nums): if len(nums) == 0 : return 0 length = 1 j = 0 for i in range(1, len(nums)): if nums[j] != nums[i]: j += 1 length += 1 nums[j] = nums[i] return length
3.Remove Duplicates from Sorted Array II [82ms]
#方法1:index表示符合条件的下一个索引,未确认的#因为最多重复两次#如果和{index-2}相同则为重复元素,索引不动等待替代#如果不同,则把{i}和{index}交换class Solution(object): def removeDuplicates(self, nums): if len(nums) <= 2: return len(nums) index = 2 for i in range(2, len(nums)): if nums[i] != nums[index-2]: nums[index] = nums[i] index += 1 return index
4.Search in Rotated Array [62ms]
#方法1:虽然是旋转的数组,但是两边肯定有一边是正序的#平时的二分只需要判断中间的元素,这里多一布判断左右那边是正序#high刚开开始指向的是无效的,后来更新也指向已经搜索过的#因为while循环里的是不相等条件,如果指向mid-1的话,剩下最后一个元素会不进行搜索class Solution(object): def search(self, nums, target): if len(nums) == 0: return -1 low = 0 high = len(nums) while high != low: mid = int((low + high) / 2) if nums[mid] == target: return mid if nums[low] < nums[mid]: if nums[low] <= target and target < nums[mid]: high = mid else: low = mid + 1 else: if nums[mid] < target and target <= nums[high-1]: low = mid + 1 else: high = mid return -1
5.Search in Rotated Array II [52ms]
#Search in Rotated Sorted Array II [52ms]#方法1:题目和I很像,只不过在判断多了一条相等的情况#如果相等只能low+1再搜索,因为之前已经判断过相等的情况了#还有就是当剩下两个元素时,mid是指向后面一个元素的class Solution(object): def search(self, nums, target): low = 0 high = len(nums) while low != high: mid = int((low + high) / 2) if nums[mid] == target: return True if nums[low] < nums[mid]: if nums[low] <= target and target < nums[mid]: high = mid else: low = mid + 1 elif nums[low] == nums[mid]: low += 1 else: if nums[mid] < target and target <= nums[high-1]: low = mid + 1 else: high = mid return False
6.Remove Element [48ms]
#Remove Element [48ms]#方法1:对于删除操作,定义一个遍历变量长度变量#当找到时,删除和长度减一,遍历变量注意保持不变#否则遍历变量自增#方法2:用索引指针,原理跟removeDuplicated类似[64ms]class Solution(object): def removeElement(self, nums, val): length = len(nums) i = 0 while i < length: if nums[i] == val: del nums[i] length -= 1 else: i += 1 return length
7.Plus One [52ms]
class Solution(object): def plusOne(self, digits): carry = 0 for i in range(len(digits)-1, -1, -1): if carry == 1: digits[i] += 1 carry = 0 if i == len(digits) - 1 : digits[i] += 1 if digits[i] >= 10: digits[i] -= 10 carry = 1 if carry == 1: digits.insert(0, 1) return digits
0 0
- leetcode-python 第一周
- leetcode-第一周
- LeetCode题解 第一周
- 第一周LeetCode
- [leetcode] 第一周作业
- java and python学习——第一周leetcode刷题
- 使用python刷Leetcode算法题(第一周)
- 学习python第一周
- python作业第一周
- python学习第一周
- leetcode-python 第十一周
- LeetCode 算法习题 第一周
- Leetcode ArrayNesting(第一周作业)
- Python学习(第一周)
- Python Date Structures 第一周
- Python学习第一周-知识点
- Python 语言程序设计---第一周练习题
- Python学习笔记[第一周]
- java简单实现缓存的三种方法
- 【2002】学生姓名按字典排序
- 添物 不花钱学计算机及编程(预备篇)— 编译原理
- 2016全球大数据战略版图剖析(3):分析篇
- 1.常量
- leetcode-python 第一周
- jQuery插件-ajaxFileUpload
- 2016全球大数据战略版图剖析(2)
- 终于,开始追求梦了。
- JavaScript Promise 实现(一)
- 单源最短路,迪杰斯特拉算法
- 图标网站
- 2016全球大数据战略版图剖析(1):架构篇
- js == 与 === 的区别