LeetCode(题目)
https://next.xuetangx.com/learn/THU08091000384/THU08091000384/1516243/article/1387079
网课笔记
东东就是我
这个作者很懒,什么都没留下…
展开
-
leetcode 1893
class Solution: def isCovered(self, ranges, left, right): i=left while i <=right: find=False for range in ranges: if range[0]<=i and range[1]>=i: i=range[1]+1原创 2021-07-23 14:12:56 · 89 阅读 · 0 评论 -
leetcode 1418
class Solution: def displayTable(self, orders: List[List[str]]) -> List[List[str]]: foods = set() res = [] table_info = collections.defaultdict(lambda: collections.defaultdict(int)) for _, table, food in orders:原创 2021-07-06 11:31:39 · 86 阅读 · 0 评论 -
leetcode 726
class Solution: def countOfAtoms(self, formula: str) -> str: element_info = [] # list of [element_name, number_of_element, number_of_parentheses] parentheses_stack = [] i = 0 while i < len(formula): if原创 2021-07-05 17:10:58 · 66 阅读 · 0 评论 -
leetcode 1833
class Solution: def maxIceCream(self, costs: List[int], coins: int) -> int: if coins<min(costs): return 0 if coins>sum(costs): return len(costs) coin=0 costs.sort() for i,cost in原创 2021-07-02 09:55:10 · 122 阅读 · 0 评论 -
leetcode 6
class Solution: def convert(self, s: str, numRows: int) -> str: if numRows==1: return s else: res=['']*numRows find=0 fuhao=0 for num in s: res[find]+=num原创 2021-07-01 21:42:07 · 51 阅读 · 0 评论 -
leetcode 4
class Solution(object): def findMedianSortedArrays(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: float """ num=(len(nums1)+len(nums2))//2 s=(len(nums1)+len(nums2)原创 2021-06-29 22:31:26 · 52 阅读 · 0 评论 -
leetcode 3
class Solution(object): def lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """ r,l,n=0,0,0 while l<=len(s): if len(s[r:l])==len(set(s[r:l])): if n<len(s[原创 2021-06-29 21:51:00 · 49 阅读 · 0 评论 -
leetcode 168
class Solution(object): def convertToTitle(self, columnNumber): """ :type columnNumber: int :rtype: str """ import string res = "" while columnNumber: columnNumber-=1 s2=co原创 2021-06-29 10:26:14 · 62 阅读 · 0 评论 -
leetcode 815
class Solution(object): def numBusesToDestination(self, routes, source, target): """ :type routes: List[List[int]] :type source: int :type target: int :rtype: int """ if source==target:原创 2021-06-29 10:02:14 · 95 阅读 · 0 评论 -
leetcode 167 -双指针
1.题目给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明: 返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], target = 9输出: [1,2]解释: 2 与 7 之和等于目标原创 2020-07-20 10:53:24 · 197 阅读 · 0 评论 -
leetcode 785 --深度和广度搜索
1.题目https://leetcode-cn.com/problems/is-graph-bipartite/给定一个无向图graph,当这个图为二分图时返回true。如果我们能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,我们就将这个图称为二分图。graph将会以邻接表方式给出,graph[i]表示图中与节点i相连的所有节点。每个节点都是一个在0到graph.length-1之间的整数。这图中没有自环和平行边: graph原创 2020-07-17 17:05:37 · 138 阅读 · 0 评论 -
leetcode 5 -动态规划实例
https://leetcode-cn.com/problems/longest-palindromic-substring/1. 题目给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"2.想法思考:看到题目什么也想不出来。还是看答案!3.解法3.1暴力破解时间复杂度为O(N3)O(N^{3.原创 2020-07-16 16:11:45 · 209 阅读 · 0 评论 -
1.贪心算法&动态规划
https://zhuanlan.zhihu.com/p/761640820.生成一个2*5的二维矩阵dp=[[0]*2]*51.贪心算法把问题拆解成多个小问题,然后求小问题的最优解,合并起来当做整个问题的解。1.1贪心算法的三步走!第一步明确到底什么是最优解?明确下来之后用小本本记下来!第二步明确什么是子问题的最优解?再用小本本记下来!第三步分别求出子问题的最优解再堆叠出全局最优解?1.2下面我总结一下使用贪心算法的前提:1、原问题复杂度过高;2、原创 2020-07-14 11:32:02 · 202 阅读 · 0 评论 -
6.计数排序&桶排序
1.计数排序https://www.cnblogs.com/bqwzx/p/11029264.html # 计数排序 def CountSort(self, nums): maxmum, minmum = max(nums), min(nums) # max-min+1个桶,初始化为0 a = [0 for _ in range(maxmum - minmum + 1)] for i in range(len(nums))原创 2020-07-10 15:17:52 · 94 阅读 · 0 评论 -
2.基数排序
1.首先按照个位排序,然后按照十位排序,以此类推。 def RadixSort(self, nums): n = len(str(max(nums))) for i in range(n): dict_, dict = {}, {} for x in range(10): dict.setdefault(x, []) # 记录负数 f原创 2020-07-10 11:54:36 · 106 阅读 · 0 评论 -
5.选择排序
1.选择排序https://zhuanlan.zhihu.com/p/40695917?utm_source=weibo&utm_medium=social&utm_oi=995977013987065856&utm_content=snapshot和冒泡排序差不多,也是选择最小的放在最前面,只是他不交换位置。class Solution(object): def sortArray(self, nums): """ :.原创 2020-07-10 10:58:40 · 112 阅读 · 0 评论 -
4.交换排序
https://zhuanlan.zhihu.com/p/40695917?utm_source=weibo&utm_medium=social&utm_oi=995977013987065856&utm_content=snapshot1.快速排序看图可能看不懂,解释一下就是选取列表第一个元素作为比较元素,小于或等于这个元素的在这个元素的左边,大于他的在右边。这样一个列表就可以确定第一个元素的位置了。然后把左边和右边的分别做相同的操作。大白话就是,一个列表找到中原创 2020-07-09 16:57:14 · 140 阅读 · 0 评论 -
3.插入排序
https://zhuanlan.zhihu.com/p/40695917?utm_source=weibo&utm_medium=social&utm_oi=995977013987065856&utm_content=snapshot循环一个列表,把每个元素都与前面的元素比较,如果该元素小于比较的元素,那么比较的元素顺序移动到后一位。然后再比较,再移动,直到找到大于比较元素。然后把该元素插入到改比较元素的后一位。其实看代码的话,插入排序有点像冒泡的比较排序,也是比较然后交原创 2020-07-09 14:14:27 · 135 阅读 · 0 评论 -
1.归并排序
1.分值策略首先是把真个列表分成无数个小元素。然后合并小元素,得到有序列表。所以第一步就是递归调用 def mergeSort(self, nums,lo, hi): if hi == lo : return mi = (lo + hi) // 2 self.mergeSort(nums,lo, mi) self.mergeSort(nums,mi+1, hi) self.merge(nums,lo,原创 2020-07-08 11:38:32 · 132 阅读 · 0 评论