- 博客(17)
- 收藏
- 关注
原创 【Leetcode刷题笔记】 单调栈
最近刷题的时候碰到很多单调栈的问题,特此记录下来,省的以后全忘了。单调栈问题都有一个特点,就是大多数的栈存的并不直接是元素,而是下标,通过下标去做判断。单调栈,顾名思义就是栈内存储的元素是非递增或者是非递减的,方便进行遍历Q1 LeetCode739 每日温度请根据每日 气温 列表 temperatures ,重新生成一个列表,要求其对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。示例 1:输入: temperatures = [
2022-02-20 19:24:41
8391
原创 【Leetcode刷题笔记 持续更新】热题TOP100篇
3. 无重复字符的最长子串给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。思路:最长,最大问题其实通常都会想到的是动态规划,而动态规划最开始都是由dp数组来实现的,但是通常在优化算法的时候dp算法都会被优化成几个变量,这其实也就可以看作是滑动窗口。这个题是要求找出最长字串的长度,那么dp数组dp[i]表示的是截止到i处,最长字串的长度。那么此时dp[i]的值有以下几种情况:1.在最长字串中没有出现过dp[i]这个字母,那么dp[i]=dp[i-1]+1,随之更新max。2.
2022-01-21 12:57:02
683
原创 斐波那契数列时间复杂度Logn的算法
矩阵分解class Solution { static final int MOD = 1000000007; public int fib(int n) { if (n < 2) { return n; } int[][] q = {{1, 1}, {1, 0}}; int[][] res = pow(q, n - 1); return res[0][0]; }
2022-01-10 14:46:22
1197
原创 【数据结构课程设计】c++实现校园导游程序及通信线路设计
【数据结构课程设计】c++实现校园导游程序及通信线路设计校园导游程序及通信线路设计问题描述:设计校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。(1) 显示校园平面图(用cout显示即可)。(2) 景点信息查询:为来访客人提供图中任意景点相关信息的查询。(3) 任意2个景点的路径查询:为来访客人提供图中任意2个景点的问路查询,即查询任意两个景点之间的一条最短的简单路径及距离。(4) 通信线路设计:以尽可能低的造价
2021-10-12 16:30:26
2911
10
原创 【数据结构】c++实现哈夫曼编码/译码
【数据结构】c++实现哈夫曼编码/译码哈夫曼编码/译码问题描述:利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发编写一个哈夫曼码的编/译码系统基本要求:(1)接收原始数据:从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmtree.dat中。(2)编
2021-10-12 16:21:53
3814
2
原创 【Leetcode刷题笔记 持续更新】Day08
Day 08异或运算:x ^ 0 = x , x ^ 1 = ~x与运算:x & 0 = 0 , x & 1 = x数组中数字出现的次数 I在一个数组 nums 中除两个数字只出现一次之外,其他数字都出现了两次。请找出只出现一次的数字。思路: 这个问题在于如何找出两个出现一次的数字。假设数字分别为x,y如果只有一个数字,那么将数组所有数字异或便能得到那个数。但是题目中有两个,那么异或的结果为x^y。因为x和y必不相同,所以至少二进制中有一位不相同,因此根据此位可以将
2021-06-17 21:21:49
123
原创 【Leetcode刷题笔记 持续更新】Day07
Day 07汉明距离两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。给你两个整数 x 和 y,计算并返回它们之间的汉明距离。思路:就是看两个数字二进制的位不一致的数目有三种方法。第一种是直接使用内置函数,这个在 汉明距离总和 题目中有影响,暴力法只有使用内置函数才会通过,自己写的函数则会超时。class Solution { public int hammingDistance(int x, int y) { return Integer.bit
2021-06-02 21:28:50
136
原创 【Leetcode刷题笔记 持续更新】Day06
Day 06停更了好一阵子,也不是不想写,只是总是坚持不下来,再加上被题一直虐都没心态了。重拾信心再次开启自己的努力之旅我也遇到了那个她,我要和她一起努力,为了以后更好的生活。冲鸭!!2的幂给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。链接:https://leetcode-cn.com/problems/power-of-two来源:力扣(LeetCode
2021-05-30 20:59:13
159
原创 【持续更新】JUC并发编程
Synchronized和Lock锁的区别1.Synchronized是内置的java关键字,Lock是java的一个类2.Synchronized锁是自动释放的,Lock锁则需要手动解锁3.Lock可以检查是否有锁,java.lang.Thread下的holdslock()方法,Synchronized不能4.Synchronized可重入锁,不可以中断,非公平,Lock可重入锁,非公平(但可以更改)5.Synchronized线程1(获得锁,阻塞),线程2(一直等),Lock不会一直等,会尝试
2021-02-13 20:58:18
119
转载 【持续更新】 Java网络编程面试题
1、tcp和udp的区别TCP:是面向连接的流传输控制协议,具有高可靠性,确保传输数据的正确性,有验证重发机制,因此不会出现丢失或乱序。UDP:是无连接的数据报服务,不对数据报进行检查与修改,无须等待对方的应答,会出现分组丢失、重复、乱序,但具有较好的实时性,UDP段结构比TCP的段结构简单,因此网络开销也小。2、tcp连接建立的时候3次握手,断开连接的4次握手的具体过程建立连接采用的3次握手协议,具体是指:l 第一次握手是客户端connect连接到serverl 第二次server accep
2021-01-25 18:08:42
417
转载 【持续更新】java多线程面试题整理
1) 什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对 运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点。2) 线程和进程有什么区别?线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。别把它和栈内存搞
2021-01-24 22:00:17
180
原创 【Leetcode刷题笔记 持续更新】Day05
Day05今天坚持住了,因为每日一题很简单,没用到什么复杂算法,要不我这小脑袋瓜是绝对不行的。自己写出来的,但是提交结果就很…来张截图,这就是赢了空间败给时间么…结果看了一些别人的,才发现上头了。。在思路里说缀点成线在一个 XY 坐标系中有一些点,我们用数组 coordinates 来分别记录它们的坐标,其中 coordinates[i] = [x, y] 表示横坐标为 x、纵坐标为 y 的点。请你来判断,这些点是否在该坐标系中属于同一条直线上,是则返回 true,否则请返回 false。来源
2021-01-17 21:27:03
163
原创 【Leetcode刷题笔记 持续更新】Day04
Day04昨天没有更,不是我没有做,而是根本不会!!!唯(w)独(d)你(n)没(m)懂(d)昨天看了两道题,还忍不住看了看官解,还是没头绪,什么动态规划啥的根本不理解。看来在补c++的同时还得补数据结构,越来越觉得自学的重要性了,课上老师说懂原理和思想就可以了,代码不重要…不重要…不重要…今天自己做出一个题,这个题可以说是第一次独立写出来的,之前的还结合了官解啥的,挺开心的,一个简单题能开心成这样,我是不是没救了…左叶子之和计算给定二叉树的所有左叶子之和链接:https://leetcode-
2021-01-16 22:35:15
150
原创 【Leetcode刷题笔记 持续更新】Day02
Day02感觉第二天就已经撑不住了…QAQ,盯了一个hard题一下午还是没能跑起来,用自己的方法结果数组越界,官解也没怎么看懂。又做一个简单题还是没思路没头绪,我的基础真的好烂,尽管最近一直在补C++,还没到STL,没啥用,题目涉及的都是算法一类的,突然感觉我们数据结构都讲了一些嘛呀…龟速前进,可能是最近精神状况不怎么好,有些急功近利了,应该是个慢功夫的,沉心静气。可被5整除的二进制前缀给定由若干 0 和 1 组成的数组 A。我们定义 N_i:从 A[0] 到 A[i] 的第 i 个子数组被解释为
2021-01-14 22:40:35
233
原创 【Leetcode刷题笔记 持续更新】Day01
Day01是要在给定的类下写函数完成功能,由于是才开始刷题,所以对给的函数体不熟悉,连vector< int >都不知道是啥。从今天开始坚持刷题,并将刷题的心得及时记录下来,希望可以从这个寒假开始,真正为自己开始努力。两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。来源:力扣(LeetCode)
2021-01-13 22:24:10
237
1
原创 【数据结构】c++实现简单的停车场
【数据结构】c++实现简单的停车场模拟停车厂管理问题描述:设停车厂只有一个可停放几辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达的先后顺序依次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则排在便道上的第一辆车即可进入;当停车场内某辆车要离开时,由于停车场是狭长的通道,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门后,为它让路的车辆再按原次序进入车场。在这里假设汽车不能从便道上开走。基本要求:以栈模拟停车场,以队列模拟车
2021-01-12 11:12:04
1888
2
原创 【数据结构】C++代码实现 约瑟夫环
【数据结构】C++代码实现 约瑟夫环我的第一篇博客,也不知道怎么说,实验课留的题目,直接上代码Josephus环问题问题描述:约瑟夫(Joseph)问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。试设计一个程序求出出列顺序。基本要求:
2021-01-12 10:39:05
5941
8
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人