摘要:
随便写个获取二叉树后续遍历的值,结果让我很疑惑 初始方式 ``` func postorderTraversal(root *TreeNode) []int { res:=make([]int,0) if root==nil{ return res } dfs(root,res) return r 阅读全文
摘要:
感觉自己二分总是写不对,上下界的寻找出错,在此记录下 先是基本的查找和特殊查找,然后是对二分进行融合的题目 2022.8.9更新 : 全部使用y总模板即可.清晰又好用. y总二分模板和原理,超级好用 相关学习链接 y总二分模板和原理,超级好用 b乎关于二分的讨论 循环带==号的解法,别搞混了 还有这 阅读全文
摘要:
随机value 防止释放其他服务的锁 不可重入分布式锁 import ( "crypto/rand" "encoding/base64" "errors" "fmt" "github.com/go-redis/redis/v7" "time" ) //分布式锁实现(不可重入) type RedisL 阅读全文
摘要:
lt66 加一 数组加一 func plusOne(digits []int)[]int { if len(digits)==0{ return []int{} } for i:=len(digits)-1;i>=0;i--{ //不等于9则加1返回 if digits[i]!=9{ digits[ 阅读全文
摘要:
括号相关的大多数用栈和dp,或者左右各自遍历一遍 lt20 合法括号 用栈,遍历string,左半边则入栈,右边则检查栈是否空和栈顶是否匹配。 c++ vector<char>str; bool isValid(string s) { for(int i=0;i<s.size();i++) { if 阅读全文
摘要:
源码阅读 先从小的框架源码入手,类似go的gin框架等等,熟悉之后再去看net包的源码。 没有高并发经验 解决方法 你完全可以按量付费开一堆云服务器模拟集群和高并发场景,也完全可以按量付费套上 CDN 、WAF 之类的来看看流量清洗的效果,更可以基于这些来模拟构建一套生产环境下的场景…无非就是你想不 阅读全文
摘要:
背包问题 01背包 每个物品选择一次,选或者不选 dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。 dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]); //背包容量是减少 阅读全文
摘要:
数组重复元素之类问题的整理 lt26 删除排序数组重复项 主要是原地删除,O(1) 空间,很是巧妙 func removeDuplicates(nums []int) int { //O(1)空间复杂 if len(nums)==0{ return 0 } tmp:=0 //不同,tmp+1,放在相 阅读全文
摘要:
leetcode 5 最长回文子串 2023.1.16 优化中心扩散的写法 var start,Len int func longestPalindrome(s string) string { //中心扩散记录 start和Len ,而且分为 两种情况,当前点左右扩散和当前和右边的点共同扩散 st 阅读全文
摘要:
接雨水 暴力法 直接记录左右最大,最后加上当前节点左右较小的与当前的差 func trap(height []int) int { res:=0 if len(height)==0{ return 0 } lmax:=make([]int,len(height)) rmax:=make([]int, 阅读全文