基本算法
基本算法
Alwaysion
more persistent for nothing
个人qq:790693499,欢迎来交流
展开
-
【力扣28. 实现 strStr()】KMP算法(Python3)
题目描述https://leetcode-cn.com/problems/implement-strstr/思路题解运用KMP算法class Solution: def strStr(self, haystack: str, needle: str) -> int: def getNext(p): n=len(p) next=[-1]*n j,k=0,-1 while j&原创 2021-08-24 15:27:38 · 444 阅读 · 1 评论 -
【力扣856. 括号的分数】分治+栈(Python3)
题目描述https://leetcode-cn.com/problems/score-of-parentheses/思路题解https://leetcode-cn.com/problems/score-of-parentheses/solution/gua-hao-de-fen-shu-by-leetcode/方法1:分治法class Solution(object): def scoreOfParentheses(self, S): def F(i, j):原创 2021-08-22 17:13:14 · 106 阅读 · 0 评论 -
【力扣402. 移掉 K 位数字】单调栈(Python3)
题目描述https://leetcode-cn.com/problems/remove-k-digits/给你一个以字符串表示的非负整数 num 和一个整数 k ,移除这个数中的 k 位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。示例 1 :输入:num = “1432219”, k = 3输出:“1219”解释:移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219 。示例 2 :输入:num = “10200”, k = 1输出:“200”解释:移掉首原创 2021-08-20 17:45:37 · 214 阅读 · 0 评论 -
【力扣88. 合并两个有序数组】三指针(python3)
题目描述https://leetcode-cn.com/problems/merge-sorted-array/思路题解使用三个指针i,j,k:i指向nums1存在有效数据的结尾,j指向nums2存在有效数据的结尾,k指向nums1结尾。从后往前遍历,谁大谁放在nums[k]上,最后当一方放完了的时候,在把剩余的存入(只考虑i全放完j没有放完的情况)class Solution: def merge(self, nums1: List[int], m: int, nums2: List[原创 2021-08-15 16:10:21 · 154 阅读 · 0 评论 -
设计题总结
目录1. 剑指 Offer 59 - II. 队列的最大值2. LRU1. 剑指 Offer 59 - II. 队列的最大值https://leetcode-cn.com/problems/dui-lie-de-zui-da-zhi-lcof/请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例 1:输入:原创 2021-08-13 12:42:48 · 90 阅读 · 0 评论 -
【力扣76. 最小覆盖子串】滑动窗口(python3)
题目描述https://leetcode-cn.com/problems/minimum-window-substring/思路题解https://leetcode-cn.com/problems/minimum-window-substring/solution/tong-su-qie-xiang-xi-de-miao-shu-hua-dong-chuang-k/注意collections.defaultdict的使用class Solution: def minWindow(self,原创 2021-08-08 20:46:58 · 182 阅读 · 0 评论 -
【力扣剑指 Offer 64. 求1+2+…+n】位运算+短路思想(Python3)
题目描述https://leetcode-cn.com/problems/qiu-12n-lcof/思路题解位运算,逐位运算https://leetcode-cn.com/problems/qiu-12n-lcof/solution/qiu-12n-by-leetcode-solution/短路思想https://leetcode-cn.com/submissions/detail/200346446/class Solution: def sumNums(self, n: int)原创 2021-07-27 17:41:44 · 91 阅读 · 0 评论 -
【力扣-剑指 Offer 44. 数字序列中某一位的数字、主站400】模拟(python3)
题目描述https://leetcode-cn.com/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/思路题解https://leetcode-cn.com/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/solution/mian-shi-ti-44-shu-zi-xu-lie-zhong-mou-yi-wei-de-6/class Solution: def f原创 2021-07-19 11:38:28 · 79 阅读 · 0 评论 -
【力扣剑指 Offer 20. 表示数值的字符串】有限状态自动机(python3)
题目描述https://leetcode-cn.com/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/思路题解https://leetcode-cn.com/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/solution/mian-shi-ti-20-biao-shi-shu-zhi-de-zi-fu-chuan-y-2/class Solution: def isNumber(self, s: s原创 2021-07-16 13:37:22 · 152 阅读 · 0 评论 -
树的公共祖先总结(236. 二叉树的最近公共祖先、235. 二叉搜索树的最近公共祖先)
目录236. 二叉树的最近公共祖先235. 二叉搜索树的最近公共祖先递归1递归2迭代236. 二叉树的最近公共祖先236. 二叉树的最近公共祖先class Solution: def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode': def dfs(root): if not root or root==p or roo原创 2021-07-13 10:44:52 · 178 阅读 · 0 评论 -
【力扣剑指 Offer 61. 扑克牌中的顺子】脑筋急转弯(Python3)
题目描述https://leetcode-cn.com/problems/bu-ke-pai-zhong-de-shun-zi-lcof/思路题解https://leetcode-cn.com/problems/bu-ke-pai-zhong-de-shun-zi-lcof/solution/mian-shi-ti-61-bu-ke-pai-zhong-de-shun-zi-ji-he-se/class Solution: def isStraight(self, nums: List[in原创 2021-07-11 23:04:33 · 145 阅读 · 0 评论 -
【力扣146. LRU 缓存机制】哈希+双链表(python3)
题目描述https://leetcode-cn.com/problems/lru-cache/思路题解https://leetcode-cn.com/problems/lru-cache/solution/shu-ju-jie-gou-fen-xi-python-ha-xi-shuang-xiang-li/class ListNode: def __init__(self, key=None, value=None): self.key = key self原创 2021-07-08 15:27:30 · 142 阅读 · 0 评论 -
【力扣621. 任务调度器】桶思想python3
题目描述https://leetcode-cn.com/problems/task-scheduler/思路题解原来的思路,想着模拟一下,结果有测试用例死活过不了class Solution: def leastInterval(self, tasks: List[str], n: int) -> int: if n==0:return len(tasks) m={} ans=0 for s in tasks:原创 2021-06-29 12:31:13 · 107 阅读 · 0 评论 -
【力扣279. 完全平方数】完全背包+数学法-四平方和定理+BFS(python3)
题目描述https://leetcode-cn.com/problems/perfect-squares/思路题解完全背包一开始的思路:n=6665的时候,时间超限class Solution: def numSquares(self, n: int) -> int: if n<4:return n dp=[10001]*(n+1) dp[1],dp[2],dp[3],dp[4]=1,2,3,1 for i in原创 2021-06-28 17:56:43 · 187 阅读 · 0 评论 -
【394. 字符串解码】辅助栈+递归(python3)
题目描述https://leetcode-cn.com/problems/decode-string/思路题解辅助栈https://leetcode-cn.com/problems/decode-string/solution/decode-string-fu-zhu-zhan-fa-di-gui-fa-by-jyd/class Solution: def decodeString(self, s: str) -> str: stack, res, multi = [原创 2021-06-28 09:42:29 · 101 阅读 · 0 评论 -
【力扣49. 字母异位词分组】哈希表(python3)
题目描述https://leetcode-cn.com/problems/group-anagrams/思路题解class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[str]]: m=dict() ans=[[]] for s in strs: t="".join(sorted(s)) if t in m:a原创 2021-06-26 21:52:29 · 135 阅读 · 0 评论 -
【力扣31. 下一个排列】
题目描述https://leetcode-cn.com/problems/next-permutation/思路题解这个题唯一的难点在于理解题目意思。然后就是两边扫描+一次翻转。时间 O(n) 空间O(1)class Solution: def nextPermutation(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead原创 2021-06-21 20:12:31 · 76 阅读 · 0 评论 -
【力扣11. 盛最多水的容器】双指针(python3)
题目描述思路题解大神思路:https://leetcode-cn.com/problems/container-with-most-water/solution/container-with-most-water-shuang-zhi-zhen-fa-yi-do/状态消除的思想和短板利用的很不错。class Solution: def maxArea(self, height: List[int]) -> int: res,i,j=0,0,len(height)-1原创 2021-06-20 21:52:18 · 119 阅读 · 0 评论 -
【力扣46-全排列】回溯(golang)
目录题目描述思路题解题目描述https://leetcode-cn.com/problems/permutations/思路题解1.从最左边开始,遍历数组2.把数字n[i]与tmp结合,作为结果的其中之一,将n[i]剔除,把剩余的数字传入函数3.直到传入的数组长度为0时,把tmp存入结果func permute(nums []int) [][]int { ans:=new([][]int) var tmp []int Backtracking(tmp,nums,ans)原创 2021-06-03 00:56:36 · 282 阅读 · 0 评论 -
【力扣6-Z字形变换零钱兑换】多种解法,模拟Z索引+模拟行索引(golang)
目录题目描述思路题解方法1:模拟Z索引方法2:模拟行索引题目描述https://leetcode-cn.com/problems/zigzag-conversion思路题解方法1:模拟Z索引自己敲得,速度比较慢,思路就是建立一个数组,模拟整个过程:按Z字形(其实是N字形)插入-按行遍历数组-拼凑并返回结果func convert(s string, numRows int) string { //0.特殊情况处理 if numRows==1{ return s } //1.开辟矩阵原创 2021-05-18 00:01:21 · 118 阅读 · 0 评论 -
【力扣2-两数相加】递归+模拟(golang)
目录目录题目链接题目解法题目链接https://leetcode-cn.com/problems/add-two-numbers/题目解法递归法func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode { if l1 == nil && l2 == nil { return nil } if l1 == nil { return l2 }原创 2021-05-11 16:33:12 · 158 阅读 · 0 评论 -
python3基本语法与坑点合集
格式化输出a,b,c=list(map(int,input().split()))print("the number a is: %d"%a)d=6print("%d,%9d,%.3d,%04d"%(d,d,d,d))d=list(map(int,input().split()))print(type(d))D:\PycharmProjects\Diary\力扣>python test2.py7 8 9the number a is: 76, 6,006,0006原创 2021-04-02 00:07:07 · 479 阅读 · 0 评论 -
【计蒜客· T1437 最大值和次大值】
文章目录题目描述:思路题解代码题目描述:https://nanti.jisuanke.com/t/T1437思路题解此题不难,但是有2个很坑的地方:n=1时,只输出输出第一个数a[0];且不存在最大值和次大值相同的情况,例如数组是1,1,1,1,1,这种情况默认不存在代码package mainimport ( "bufio" "fmt" "math" "os" "strconv" "strings")func main(){原创 2021-03-15 23:59:05 · 202 阅读 · 0 评论 -
【力扣3-无重复字符的最长子串】滑动窗口的双指针(golang)
目录题目描述思路题解题目描述https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/思路题解用一个指针i代表窗口的左边,指针j代表窗口右边。i<n时循环,hashmap isRepeat[byte]int判断是否含有重复字符:若j+1<n && isRepeat[s[j+1]]==0,则代表无重复且j不为最后一个元素,则j++,求出现在的ans=j-i+1和原来的a原创 2020-12-11 20:08:05 · 155 阅读 · 0 评论 -
【力扣15-三数之和】多种解法(hashmap+双指针)(golang)
目录题目描述思路题解方法1:hash法题目描述https://leetcode-cn.com/problems/3sum/思路题解方法1:hash法func threeSum(nums []int) [][]int { mapCount := make(map[int]int, len(nums)) mapRepeat := make(map[[3]int]int, len(nums)) var ans [][]int for i:=0;i<len(nums)原创 2020-12-11 15:14:46 · 312 阅读 · 0 评论 -
【力扣448-找到所有数组中消失的数字】多种解法(python3+golang)
目录题目描述思路题解题目描述思路题解原创 2020-12-06 19:10:04 · 249 阅读 · 1 评论 -
python3 sort与sorted函数
python sort函数内部实现原理sort与sorted的区别sorted函数时间复杂度:python内置函数时间复杂度原创 2020-11-22 14:48:17 · 172 阅读 · 0 评论 -
【Python3 日期和时间模块】time、calendar、datetime模块用法总结
目录1. time模块1.1 时间戳: time.time()1.2 时间元组:struct_time1.3 获取格式化时间2. datetime模块3. calendar模块1. time模块1.1 时间戳: time.time()表示自从 1970 年 1 月 1 日午夜(历元)经过了多长时间 import time # 引入time模块 ticks = time.time() print ("当前时间戳为:", ticks) #输出:原创 2020-11-04 15:52:32 · 1157 阅读 · 0 评论 -
【力扣0001】两数之和(python3+golang)
由于刚上研事不多且想到以后的就业方向,决定来刷一下Leetcode,由于最近在练习python于是就索性逼着自己用python写,导致飘红一片........题干:给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定...原创 2019-10-16 17:16:24 · 205 阅读 · 0 评论