自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 剑指offer - 用两个栈实现队列

2)弹出需要注意:因为有两个栈,除了栈内的数有先后顺序,两个栈之间也有优先级。因为栈1出来的才能进栈2,所以。本题非常简单,栈是先进后出的。数字通过栈会改变一次顺序,经过两个栈顺序会负负得正。总体方案就是数字压入栈1,再从栈1弹出压入栈2,从栈2中弹出的数是返回的结果。1)压栈很简单:直接放入栈1就可以。

2025-04-03 14:20:23 89

原创 剑指offer - 包含min函数的栈

辅助栈法解决思路:除了数据栈,创建一个辅助栈,存对应数据压栈时当前栈内的min数据。方法就是数据压栈时比较,若当前数据比min栈顶大,说明当前数据压栈后,min还是当前的栈顶,继续压入存个min就可以了。如果当前数据比min栈顶小,说明这个数据压栈后,当前数据栈的min变为该数据,因此min栈压入该数据。而且插入数据时也要O(1)说明不是通过排序的方法来获取min的,否则插入数据至少要O(nlogn)。因此可以想到,可以记录每个数据压栈时对应的min,在一个辅助栈中,辅助栈随原栈一起压入和弹出。

2025-03-31 21:49:47 145

原创 剑指offer面试题31 - 栈的压入、弹出序列

方法一:就使用栈模拟。

2025-03-21 08:41:34 65

原创 剑指offer - 删除链表中重复的结点

因此我们在遍历处理某个节点的时候必须要保留这三个信息。但其实这三个信息,其实只需要保留一个prev节点指针就够了。待删除节点和next节点就可以通过next指针访问到了。因此,我们循环时,cur指向prev节点,将cur->next作为本轮处理的节点即可。此题要想清楚,删除一个单项链表节点,需要节点本身、prev节点、next节点。并且让cur始终是处理完的节点,cur->next后面的才有可能删除即可。

2025-03-21 08:15:40 130

原创 剑指offer - 面试题7 重建二叉树]

题目链接:重建二叉树前序定根,中序划分再有就是注意区间别算错了

2025-03-13 13:12:38 90

原创 剑指offer - 二进制中1的个数

直接右移,负数是补符号位1而不是补0。这个题主要是练二进制相关的操作,做法比较多。

2025-03-12 19:41:30 113

原创 leetcode 142. 环形链表 II

因此在相遇时,将快慢指针中的一个放到起点,和另一个指针,每次移动1个节点,再次相遇就是入环节点了(因为a就是入环的距离,相当于起始节点移动a次到入环节点。(n -1)(b+c)就是走了n-1次环,刚好还有c的距离,就是相遇点绕n圈之后,再走个c个节点就会回到入环点。核心其实是数学推导。上面的距离等同于要走多少个节点,例如起始节点到入环节点距离为a,代表起始节点,移动a次就到入环节点。仍然是快慢指针的思路,假设入环的距离是a,入环点到相遇点的距离是b,相遇回到入环的距离是c。

2025-03-12 13:16:18 219

原创 剑指offer - 面试题26树的子结构

升级的地方就是两个递归。第一层递归是遍历pRoot1作为根节点。第二层就是对每个访问到的根,判断是否和pRoot2相同(pRoot1包含pRoot2即可,pRoot1可以含有pRoot2没有的节点)。题目要求pRoot2是pRoot1的子树,在检查是否是子树的递归中,结束条件:pRoot2为空就可以返回true,而不需要pRoot1同时为空。主要的坑点就是要想明白递归的结束条件。

2025-03-11 19:19:06 230

原创 146. LRU 缓存

2)哈希表:由于题目提到了希望O(1)的时间进行get,只有一个lru链表肯定做不到的,只能遍历,那就是O(n),所以必须还要一个哈希表,通过key快速定位到lru的节点,拿到value。这个题目的核心也就是对lru链表的操作、以及lru链表和哈希表的配合(lru链表和哈希表必须保持数据一致,不能哈希表有的key,在lru离没有)。结构体方面:由于需要移除链表中任意一个节点,为了不遍历,必须要双向链表,因为单向链表拿不到某个节点的prev。1)input:插入到lru链表:在链表未满时,需要插入到链表头。

2025-03-03 19:33:16 276

原创 剑指offer - 面试题12 矩阵中的路径

【代码】剑指offer - 面试题12 矩阵中的路径。

2025-02-26 22:59:44 70

原创 剑指offer - 面试题11 旋转数组的最小数字

【代码】剑指offer - 面试题11 旋转数组的最小数字。

2025-02-25 22:36:29 203

原创 trie字典树

字典树关键每个节点包含整个字母表,空间占用浪费很多。trie的形状和插入顺序无关,相同字符串集的trie树是相同的参考:Trie Tree 的实现 (适合初学者)🌳

2022-06-27 09:46:31 235

原创 leetcode_hot100 数组专题

leetcode - hot100 数组专题

2022-06-12 11:23:45 251

原创 vs code c++ 插件及快捷键配置(同步jetbrains快捷键习惯)

vs code c++插件及快捷键配置

2022-06-07 15:03:42 829

原创 环境变量配置问题

.bash_profile和.zshrc区别.bash_profile 中修改环境变量只对当前窗口有效,而且需要 source ~/.bash_profile才能使用.zshrc 则相当于 windows 的开机启动的环境变量参考Mac 每次都要执行source ~/.bash_profile 配置的环境变量才生效???Zsh和Bash的区别是什么?...

2022-05-04 17:15:20 837

原创 旋转数组专题

二分的核心思想就是干掉一半的解空间153. 寻找旋转排序数组中的最小值// 二分的核心思想就是干掉一半的解空间class Solution {public: int findMin(vector<int>& nums) { int len = nums.size(); int l = 0, r = len - 1; while (l < r) { int mid = l + (r - l) .

2022-03-01 18:39:01 104

原创 146. LRU 缓存

146. LRU 缓存单向链表不遍历无法直接删除给定的节点双向链表因为:哈希表给出待操作的节点指针,需要delete或者moveToHead操作,单向链表无法获取该node的前向节点,删除该节点链表节点需要key是因为:deleteTail之后,需要把哈希表中对应的key也给删了// hashTable.begin()返回的是pair<int, Node*>,得用p->first和p->second访问// 导致"heap-use-after-free"大概率是链表

2022-02-21 10:01:20 448

原创 剑指 Offer 27. 二叉树的镜像

class Solution {public: TreeNode* mirrorTree(TreeNode* root) { if (root == nullptr) return nullptr; if (root->left == nullptr && root->right == nullptr) return root; // 1. root->right = mirrorTree(root->left

2022-02-17 11:37:10 249

原创 剑指 Offer 34. 二叉树中和为某一值的路径

!!!修改全局变量的宗旨,当前节点对全局变量的修改要持续到子节点,但要在进入兄弟节点前取消掉class Solution {private: vector<vector<int>> res; vector<int> path; int tmpSum = 0;public: vector<vector<int>> pathSum(TreeNode* root, int target) { i.

2022-02-17 11:13:12 251

转载 hacker news排名算法学习

hacker news网站使用的,基于用户投票的排名算法

2022-02-05 16:56:49 1126

原创 146. LRU 缓存

146. LRU 缓存超时的思路class Node {public: int val; int key; Node * pre, * next; Node(int k,int v):val(v), key(k), pre(NULL), next(NULL){} Node():pre(NULL), next(NULL){}};class LRUCache {private: // 5.bug. 类的成员变量必须初始化,因为是放在栈中的,siz

2022-02-03 19:22:58 306

原创 排序(严蔚敏版)

排序算法

2022-02-01 16:24:52 1427

原创 leetcode hot100刷题记录

树96 不同的二叉搜索树栈32 最长有效括号出现不匹配的右括号知道计数可以重新开始了但遇见左括号,无法确定未来是否会匹配,未来匹配不上计数应当重新开始,能匹配上计数应该继续()((),这个左括号就无法判断是否应该把第一对的2继续加上最后一对的2数组,串之类的题,最暴力的可以枚举两个边界...

2022-01-18 20:43:27 251

原创 剑指 Offer 16. 数值的整数次方

剑指 Offer 16. 数值的整数次方收获:对于输入要考虑它什么值都能取到,是否会有异常情况,异常情况可以用全局变量/返回值/error报出,可以和面试官讨论用哪种int的范围,-2147483648~+2147483647,负数比正数多一个(计算机中的正负数表示:正负号由第一位表示,例如8byte的数字,2^8=256可以表示256个数,正数最大01111111=127,以为0的正负都一样,没必要占用正负两种表示,所以10000000没有意义,因此设置了一种巧妙的表示负数的方法:补码:=负数对

2022-01-18 20:37:54 249

原创 软件架构基础

软件架构届的DDIAhttps://book.douban.com/subject/35306892/

2021-12-04 16:38:56 155

转载 golang 的 操作符号“<-“是什么

https://bbs.youkuaiyun.com/topics/391922084goroutine是golang中在语言级别实现的轻量级线程,仅仅利用 go 就能立刻起一个新线程。多线程会引入线程之间的同步问题,在golang中可以使用channel作为同步的工具。 通过channel可以实现两个goroutine之间的通信。 创建一个channel, make(chan TYPE {, NUM}) , TYPE指的是channel中传输的数据类型,第二个参数是可选的,指的是channel的容量大小。 向cha

2021-11-18 15:10:50 5034

原创 配置iterm 2快速打开网页

修改~/.zshrc中的配置, alias key='noglob open 网址'注:给命令添加前缀noglob,解决报错zsh:no matches found: xxxxxxsource ~/.zshrc使命令生效

2021-10-18 18:29:11 583

转载 解决MAC电脑Sequel Pro encountered an unexpected error 问题

sequel pro mac上崩溃使用test build版本, https://sequelpro.com/test-builds

2021-07-20 17:01:15 518

原创 goland中报错: Unresolved reference 错误解决

今天新下载了一个项目,go get后,相应的包已经下载下来了。但代码中对应的引用都飘红了解决方案https://blog.youkuaiyun.com/weixin_42012911/article/details/106916443

2021-07-13 11:31:35 292

原创 RocketMQ-事务消息实现原理

### 应用场景目前大多数企业采用基于分布式、微服务的设计理念,将核心系统功能拆分为多个微服务。这样就会存在一条业务链路中部分请求成功,部分请求失败的问题,那么如何在分布式场景下,如何保证消息发送与业务的一致性是RocketMQ需要解决的重要问题。 相关概念 分布式系统:分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 微服务:微服务是一种用于构建应用的架构方案。微服务架构有别于更为传统的单体式方案,可将应用拆分成多个

2021-06-23 22:28:36 827

转载 【洛谷日报#13】浅谈二分的边界问题

Part1:二分的中心思想这是一个杯具,当你将二分的l+1<r写成l<r时,相信很多人都讨厌二分的边界,每次都弄不清楚二分的l和r要等于mid,还是mid-1,又或者是mid+1,这导致了很多人因此失分,那么,到底要怎么做才能区分二分的边界呢?二分的思想主要分三种:l和r代表的“成本值”均可行,且有一个ans变量记录当前的最优 l和r代表的“成本值”均可行,最后的答案是l或r l代表的“成本值”可行,r不可行,最后的答案是l下面我们将依次讲解1、2两种,第三种不推荐使用,比较容

2021-01-10 11:01:25 434

转载 JTabel数据刷新

https://blog.youkuaiyun.com/ecjtusbs/article/details/75136715

2019-11-30 21:14:48 153

转载 eclipse打包成exe

mark这个链接 https://www.cnblogs.com/icewee/articles/2073203.html

2019-11-21 14:47:32 154

原创 mysql出现root密码导致的问题,建库失败;Access denied for user 'root '@'localhost' (using password: NO)等

解决方法,有空再整理,基本原理就是跳过输入用户名密码步骤,改变user表中root密码即可结合下面两个链接的博客应该就可以解决https://blog.youkuaiyun.com/mazuyu408/article/details/86741551https://blog.youkuaiyun.com/tuenbotuenbo/article/details/38921775/...

2019-11-05 15:43:48 149

转载 listView的自定义使用

1) 定义一个实体类 Fruit,作为 ListView 适配器的适配类型。2) 为 ListView 的子项指定一个我们自定义的布局 fruit_item.xml。3) 创建一个自定义的适配器 FruitAdapter,这个适配器继承自 ArrayAdapter。重写构造方法和 getView 方法。4)在MainActivity中编写,初始化水果数据原博文 :https://w...

2019-10-16 12:09:14 191

原创 android studio安装步骤

android studio安装过n次了,每次都忘怎么装,必须要记录一下了1.官网下载SDK和IDE2.安装SDK3.安装IDE https://jingyan.baidu.com/article/ce4366495fccf23773afd382.html4.打开IDE(Android Studio) ,出现 unable 一大串是没有在默认路径上检测到SDK,点击cance...

2019-10-12 20:19:04 148

原创 快速幂

要求a^b 最简单就是把a连×b次,所以复杂度是O(b)也就是O(n)看起来还行哈,但是当然有更好的啦一般人真很难直接想到还有这种操作:快速幂快的原因就是因为它充分利用之前的结果,零碎的东西在最前面先×上,到后面就越来越大ll ksm(ll a,ll b){ ll ans = 1,base = a; while(b) { if(b&1) { an...

2019-09-19 19:45:00 108

原创 最短路径之dijistra

dijistra算法:跑过一边之后就把源点到所有点的最短距离都求出来了。算法思想其实应该属于DP,因为这个问题有着明显的最优子结构d[y]是指源点到y的最短距离,那显而易见:d[y] = min{d[x]+w(x,y)}这个和一般的dp题代码有点区别,因为一般的都是根据下标来推下一个,而这个点之间的连接要靠图来判断最重要的区别是初始化的时候只有一个值是已知的,就是所有源点直接相邻的...

2019-09-18 17:13:14 340

原创 最短路径之弗洛伊德

Floyd算法是大二到大三期间集训时候才算真正接触的,或许只有前一段时间DP的积累现在才算是真正理解这个算法需要充分理解DP的滚动数组思想才能算是真正的掌握Floyd算法又称为插点法算法的目标是要求图中所有两个点的最短距离,就用dis[i][j]来表示但是dis[i][j]是不够设置为状态的,因为这个状态比较粗略,状态之间无法转换这里就加了一个很神奇的限制条件,然后形成了这个状...

2019-09-17 23:44:53 215

原创 图的邻接表存储方式

用链表应该是比较麻烦的,可以用结构+数组实现struct Edge{ int from,to,val,next;}edge[maxn];int edgenum;void addedge(int u,int v,int w){ edge[edgenum].from = u; edge[edgenum].to = v; edge[edgenum].val...

2019-09-16 19:33:19 358

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除