leecode
qq_45692660
这个作者很懒,什么都没留下…
展开
-
动态规划之-线性DP
class Solution(object): def lengthOfLIS(self, nums): """ :type nums: List[int] :rtype: int """ DP=[0]*len(nums) for i in range(len(nums)): if i==0:DP[i]=1 else: da.原创 2021-08-23 14:58:19 · 92 阅读 · 0 评论 -
哈希表-1160-575-1640-剑指offer03-961-884-705(设计哈希表,拉链法待更新)-1189-1078-219
class Solution(object): def countCharacters(self, words, chars): """ :type words: List[str] :type chars: str :rtype: int """ dic={} sum=0 for i in chars: dic[i]=dic.get(i,0)+..原创 2021-04-29 23:00:18 · 59 阅读 · 0 评论 -
python中split控制划分的次数
class Solution(object): def subdomainVisits(self, cpdomains): """ :type cpdomains: List[str] :rtype: List[str] """ res = {} for case in cpdomains: time, domain = case.split() .原创 2021-04-29 20:03:24 · 414 阅读 · 0 评论 -
哈希表-771-1512-1748-349-1207-139-500
class Solution(object): def numJewelsInStones(self, jewels, stones): """ :type jewels: str :type stones: str :rtype: int """ dic={} for i in jewels: dic[i]=True num=0 ..原创 2021-04-28 23:24:37 · 99 阅读 · 0 评论 -
栈-844-比较含退格的字符
class Solution(object): def backspaceCompare(self, s, t): """ :type s: str :type t: str :rtype: bool """ stack1=[] stack2=[] for i in s: if i=='#' and len(stack1)==0: ..原创 2021-04-26 22:29:25 · 60 阅读 · 0 评论 -
栈-1544-整理字符串
class Solution(object): def makeGood(self, s): """ :type s: str :rtype: str """ stack=[] for i in s: if len(stack)==0: stack.append(i) else : if o..原创 2021-04-26 22:18:16 · 50 阅读 · 0 评论 -
栈-1441-用栈操作数组
1.判断当前的idx数是否在target数组中,若存在则返回栈进行一次push处理,并将该数据存入数组栈2.先判断target是否与数组栈相等,相等时即已经满足结束条件,否则则对返回栈进行一次push以及一次pop处理class Solution(object): def buildArray(self, target, n): """ :type target: List[int] :type n: int :rtype: L原创 2021-04-26 21:51:21 · 94 阅读 · 1 评论 -
栈-1598-文件夹日志操作
1.遇到‘…/’并且栈为空时,说明此时已经在主目录中,不做任何处理2.遇到‘…/’并且栈不为空时,出栈3.遇到‘./’时,不做任何处理4.遇到其他时即相应的进入该子文件夹,即进行一次入栈操作class Solution(object): def minOperations(self, logs): """ :type logs: List[str] :rtype: int """ stack=[]原创 2021-04-26 21:19:23 · 65 阅读 · 1 评论 -
栈-496-下一个更大的元素
栈+哈希表s1是s2的子集当将要入栈的元素小于栈首元素时入栈,否则先将小于将要入栈元素的所有的在栈内的元素全部出栈,最后再入栈该元素class Solution(object): def nextGreaterElement(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: List[int] """原创 2021-04-25 23:06:20 · 50 阅读 · 0 评论 -
栈-682-棒球比赛
import numpy as npclass Solution(object): def calPoints(self, ops): """ :type ops: List[str] :rtype: int """ stack=[] res=0 for i in ops: if i=='C': res-=stack[-1] ..原创 2021-04-25 22:18:19 · 57 阅读 · 0 评论 -
栈-1047-删除所有相邻字符
创建栈,判断要入栈的字符与出栈的字符是否相等,若相等就真的出栈,否则就继续迭代class Solution(object): def removeDuplicates(self, S): """ :type S: str :rtype: str """ stack=[] for i in S: if len(stack)==0: stack.a原创 2021-04-25 21:56:23 · 61 阅读 · 0 评论 -
栈-1021-删除最外层括号
遇到左括号入栈,右括号出栈,当栈为空时找到了一个最外层的括号class Solution(object): def removeOuterParentheses(self, S): """ :type S: str :rtype: str """ stack=[] res='' left=0 for i in range(len(S)): if原创 2021-04-25 21:41:42 · 73 阅读 · 0 评论 -
数组-1365-计数排序
不管位于该数据的前后都要进行计算暴力法:class Solution(object): def smallerNumbersThanCurrent(self, nums): """ :type nums: List[int] :rtype: List[int] """ res=[0]*len(nums) for i in range(len(nums)): num=0 .原创 2020-12-19 23:29:10 · 112 阅读 · 1 评论 -
数组-1313
1.时间多花费在列表的append()操作上2.先统计返回列表长度后一次在赋值class Solution(object): def decompressRLElist(self, nums): """ :type nums: List[int] :rtype: List[int] """ ''' data=[] for i in range(0,len(nums),2): .原创 2020-12-02 22:34:39 · 122 阅读 · 0 评论 -
数组-1486-数组异或
class Solution(object): def xorOperation(self, n, start): """ :type n: int :type start: int :rtype: int """ num=start for i in range(1,n): num^=(start+2*i) return num原创 2020-12-01 19:29:11 · 55 阅读 · 0 评论 -
数组-1470-重新排列数组
class Solution(object): def shuffle(self, nums, n): """ :type nums: List[int] :type n: int :rtype: List[int] """ n=len(nums) res=[0 for i in range(n)] a=0 for i in range(n//2): .原创 2020-12-01 19:12:27 · 67 阅读 · 0 评论 -
数组-1476-子矩形查询
1.暴力法class SubrectangleQueries(object): def __init__(self, rectangle): """ :type rectangle: List[List[int]] """ self.data=rectangle def updateSubrectangle(self, row1, col1, row2, col2, newValue): """原创 2020-11-30 22:40:51 · 49 阅读 · 0 评论 -
排序-1122-数组的相对排序
利用哈希表来保存arr2中的排序索引利用双指针结合哈希表来区别元素是否在表中利用指针的索引对arr1进行划分两种排序方式:1种是arr2中的排序方式排序,第二种则是元素大小排序class Solution(object): def relativeSortArray(self, arr1, arr2): """ :type arr1: List[int] :type arr2: List[int] :rtype: List[in原创 2020-11-28 21:44:52 · 94 阅读 · 0 评论 -
哈希表-349-数组的交集
由于交集的元素个数是唯一的,找到了便删除class Solution(object): def intersection(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: List[int] """ hasp_map={} for i in range(len(nums1)):原创 2020-11-28 20:50:36 · 137 阅读 · 0 评论 -
排序-1491-平均工资
1.排序,后求和,但是时间复杂度不行2.经过一次迭代之后找出最大值以及最小值,并在迭代过程中求和class Solution(object): def average(self, salary): """ :type salary: List[int] :rtype: float """ min_idx=0 max_idx=0 sum=0 num=len(salary)原创 2020-11-28 20:12:38 · 65 阅读 · 0 评论 -
排序-1640-能够连接成数组
根据arr的排列顺序来对pieces进行排序,哈希表中保留arr中的顺序索引。然后迭代比较。class Solution(object): def canFormArray(self, arr, pieces): """ :type arr: List[int] :type pieces: List[List[int]] :rtype: bool """ hash_map={} for原创 2020-11-27 21:19:04 · 72 阅读 · 0 评论 -
排序-150-等差数列
排序后迭代比较class Solution(object): def canMakeArithmeticProgression(self, arr): """ :type arr: List[int] :rtype: bool """ arr.sort() d=arr[1]-arr[0] for i in range(2,len(arr)): if arr[i]-原创 2020-11-27 20:43:59 · 104 阅读 · 0 评论 -
排序-242-有效的字母异位词
1.堆排序,比较字符串顺序是否一致class Solution(object): def isAnagram(self, s, t): """ :type s: str :type t: str :rtype: bool """ def sift(lis,low,high): temp=lis[low] i=low j=2*i+1原创 2020-11-26 14:58:12 · 64 阅读 · 0 评论 -
排序-双要求-1636
有两个排序要求,要在次数排序符合要求的基础上满足大小排序:所以是要大小先有序,然后再对出现的次数进行排序需要进行的则是保序排序:import collectionsclass Solution(object): def frequencySort(self, nums): """ :type nums: List[int] :rtype: List[int] """ nums.sort(reverse=True)原创 2020-11-26 14:38:17 · 73 阅读 · 0 评论 -
滑动窗口-3-无重复的最长字符串
1.利用哈希表来判别是否重复,从重复位置(首)的后面一个位置从新开始查询,并重新置空哈希表class Solution(object): def lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """ i=0 j=0 max_len=0 hash_map={} s=str(s原创 2020-11-24 11:08:33 · 55 阅读 · 0 评论 -
哈希表-389找不同
更新后的减去更新前的即为新添加的class Solution(object): def findTheDifference(self, s, t): """ :type s: str :type t: str :rtype: str """ hasp_map={} for i in range(len(t)): if hasp_map.get(t[i]) is n原创 2020-11-19 21:57:40 · 98 阅读 · 0 评论 -
217--是否存在重复的元素
1.双指针2.排序后比较3.哈希表4.集合class Solution(object): def containsDuplicate(self, nums): """ :type nums: List[int] :rtype: bool """ haspmap={} for i in range(len(nums)): if haspmap.get(nums[原创 2020-11-19 19:55:22 · 78 阅读 · 0 评论 -
递归-斐波拉且数列
保留当前所计算的结果以及前一个结果class Solution(object): def fib(self, N): """ :type N: int :rtype: int """ ''' if N==0: return 0 if N==1: return 1 return self.fib(N-1)+self.fib(N原创 2020-11-12 17:42:59 · 180 阅读 · 0 评论 -
滑动窗口-滑动窗口中的最大值
找出每一个窗口中的最大值并保存这个最大值的结果法1:依次迭代所有的窗口,窗口中的数值再比较大小法2:依次迭代所有的窗口,让新增的数值与上一个窗口中的最大值索引进行比较,如果上一个最大值的索引不位于上一个窗口的起始处,让新增的数据与上一次的最大值直接进行大小比较即可,并保留结果较大的值。若索引位于上一个窗口的起始处,则此窗口中的数据依次比较大小法二代码与结果如下:class Solution(object): def maxSlidingWindow(self, nums, k):原创 2020-11-11 11:24:58 · 147 阅读 · 0 评论 -
二分法之-搜索插入位置
元素存在,则返回索引关键在于元素不存在,同样返回位置的索引当左区间大于右区间时结束循环,会出现一种【0,-1】的情况,并且无法整除,会导致区间下溢的情况出现。需要单独判断这一情况。否则再与最后一个节点的值比大小,目标值大于节点值则插入在右边,否则在左边class Solution(object): def searchInsert(self, nums, target): """ :type nums: List[int] :type targ原创 2020-11-09 20:57:14 · 157 阅读 · 0 评论 -
二分法之-剑指offer53-统计次数
先找到等于目标值的节点,然后在该节点的前后判断该数据是否再次出现,判断前后时注意不要越过了列表索引的上下限class Solution(object): def search(self, nums, target): """ :type nums: List[int] :type target: int :rtype: int """ min_idx=0 n=len(nums)原创 2020-11-09 15:52:36 · 140 阅读 · 0 评论 -
Leetcode---278---二分法之发现第一个错误的版本
未错误之前的都为False,错误之后的都为True,找到刚好发生错误的哪一个节点出来关键信息:3种状态False、False,True、True,False、True,当前节点的结果取反乘以下一个结果如果结果仍然为True,则找到该节点的下一个点即为发生错误的点# The isBadVersion API is already defined for you.# @param version, an integer# @return a bool# def isBadVersion(ver原创 2020-11-09 14:29:23 · 113 阅读 · 0 评论