- 博客(224)
- 问答 (7)
- 收藏
- 关注
原创 leetcode hot100 41.第一个缺失的正数 hard
nums.sort():对数组进行排序,时间复杂度为 O(n log n)smallest_missing = 1:假设最小缺失的正整数是 1。总体时间复杂度是 O(n log n),这是由排序操作主导的。排序的时间复杂度是 O(n log n)。遍历数组的时间复杂度是 O(n)。O(1),因为我们只使用常数空间。
2026-01-16 11:16:35
130
原创 leetcode hot100 238.除了自身以外数组的乘积 medium
使用了三个数组 left、right 和 res,它们的大小都为 n。left 和 right 都是 时间复杂度O(n²)res 数组的时间复杂度是 O(n)空间复杂度是 O(n)时间复杂度O(n²)
2026-01-15 21:03:26
126
原创 leetcode hot100 189.轮转数组 medium
如果 k 比 n 大,可以考虑将 k 取模 n ,即 k = k % n,这样可以减少不必要的旋转步骤。没有使用额外的空间,只是在数组操作过程中使用了一个临时变量 temp 来存储当前旋转的元素。k = 0 且 nums 只有一个元素时,使用 nums[:-0] 返回了一个空数组。nums[:-k]:获取数组的前 n-k 个元素。nums[-k:]:获取数组的最后 k 个元素。k = 0 且 nums 只有一个元素时,例如nums = [1], k = 0。时间复杂度:O(k×n)空间复杂度是 O(1)
2026-01-15 20:25:34
243
原创 leetcode hot100 56.合并区间 medium
错误:如果初始化时错误地选择了 res = [] 而不是 res = [intervals[0]],将导致 res 列表为空,无法进行合并操作。原因:如果两个区间合并,应该只更新 res[-1][1],而不是重复添加 intervals[i]。正确做法:合并时应始终更新 res[-1][1],即 res 中最后一个区间的结束位置。排序是合并区间的第一步。错误:在合并时直接更新 res[i][1],而不是 res[-1][1]。正确做法:合并区间时,更新 res[-1][1] 后继续检查下一个区间。
2026-01-15 19:40:49
377
原创 leetcode hot100 53.最大子数组和 动态规划 medium
即每轮迭代 dp[i] 的更新为:dp[i] = max(nums[i], dp[i-1] + nums[i])再与之前的迭代结果比较: maxsum = max(dp[i] ,maxsum)时间复杂度:O(n),其中 n 是数组的长度,因为我们只遍历一遍数组。空间复杂度:O(n),需要存储 dp 数组。
2026-01-15 17:06:38
96
原创 leetcode hot100 239.滑动窗口最大值 hard 滑动窗口
我们希望队列中的元素按降序排列,这样队列的最前面(dq[0])始终是当前窗口中的最大值。如果新元素比当前队列的最左端元素大,就将它放在队列最前面。否则,把它放到队列的正确位置,使队列保持从大到小的顺序。
2026-01-14 11:19:17
186
原创 leetcode hot100 560.和为 K 的子数组 medium 前缀和 + 哈希表
增加一个负数可能使得窗口和变得更小,因此不能简单地通过扩大窗口(即增大 right)和收缩窗口(即增大 left)来确保子数组和满足条件。即,如果 sum - k 在哈希表中, 那么和为k的子数组存在。滑动窗口的关键假设是:当滑动窗口时,和应该是递增或递减的。,到当前位置的和为 sum。,到当前位置的和为 k,但当数组中包含负数时。
2026-01-11 21:09:47
173
原创 leetcode hot100 438. 找到字符串中所有字母异位词 滑动窗口 medium
O(n * k log k),其中 n 是字符串 s 的长度,k 是字符串 p 的长度。:O(n + k),其中 n 是字符串 s 的长度,k 是字符串 p 的长度。窗口的大小会始终保持为 p 的长度,保证每次比较的都是相同长度的子串。排序的时间复杂度是 O(k log k),其中 k 是 p 的长度。如果字符串 p 较大(即 k 较大),排序操作的代价会比较高。其中 n 是字符串 s 的长度,k 是字符串 p 的长度。每次滑动窗口时需要对窗口进行排序。
2026-01-11 19:40:50
182
原创 leetcode hot100 3.无重复字符的最长子串 medium 滑动窗口(双指针)
while s[right] in s[left:right] 的操作虽然看起来是 O(n) 的操作(因为它在 left:right 的子串上查找),但由于每个字符的 left 和 right 只移动一次,in 操作的时间成本不会累积成 O(n²)。除了输入字符串 s 外,程序只使用了两个额外的变量:left 和 max_len,它们都占用常量空间。如果 s[right] 已经在窗口里,缩小 left(直到s[right] 不在窗口里)如果 s[right] 没出现过,扩大窗口,更新最大长度。
2026-01-11 18:06:55
174
原创 leetcode hot100 42 接雨水 hard 双指针
最后,从左往右遍历数组,每个位置当前的水=min(left_max[i], right_max[i]) - height[i]先从左往右遍历一遍数组,求出每个位置左边最大的高度。再从右往左遍历一遍数组,求出每个位置右边最大的高度。
2026-01-11 17:15:56
216
原创 leetcode hot100 15. 三数之和 medium
如果我们直接移动指针,左指针 left 会指向下一个 0,右指针 right 会指向下一个 1,这时候我们会重复添加 [-1, 0, 1] 这个三元组。总的时间复杂度为 O(n²) +O(n log n) = O(max(n log n, n²)) = O(n²)双指针扫描是 O(n)。对于每个 i,双指针的扫描是 O(n) 的操作,而外层循环遍历了 n 个元素。:因为数组是排过序的,可能会遇到值相同的元素。假设数组已经排序:[-1, -1, 0, 1, 1]我们找到的三元组是 [-1, 0, 1]。
2026-01-10 19:47:44
381
原创 leetcode hot100 11.盛最多水的容器 medium 双指针
矮高已被丢弃,矩形高度变为height[j] , height[j] > 原来的height[i] ,底宽减小,最大水量有机会变大。,矮高已被丢弃,矩形高度变为K ,K > 原来的height[i] ,底宽减小,最大水量有机会变大。,矮高已被丢弃,矩形高度变为K ,K > 原来的height[i] ,底宽减小,最大水量有机会变大。,矩形高度仍然为height[i],底宽减小,最大水量比原来小。,矩形高度仍然为height[i],底宽减小,最大水量比原来小。如果移动高的那一边,矮高被保留。
2026-01-09 21:10:39
215
原创 leeetcode hot100 283移动零 双指针 easy
✅ 本质上算“双指针”(只是“写指针 + 读指针”的形式)这是原地(in-place),修改发生在 nums 本身。时间复杂度是 O(n)空间复杂度 O(1)
2026-01-09 20:23:18
204
原创 leetcode hot100 最长连续子序列 哈希表 medium
时间总复杂度 = 排序 + 遍历。O(nlogn) + O(n) = O(max(n log n, n)) = O(n log n )遍历每个数字,只从“序列起点”开始向右查找连续数字,这样每个数字最多访问一次 → O(n)
2026-01-08 21:39:40
219
原创 Linux configure.ac:51: error: possibly undefined macro: AC_MSG_ERROR
【代码】Linux configure.ac:51: error: possibly undefined macro: AC_MSG_ERROR。
2024-08-26 14:33:41
625
1
原创 低功耗 电源管理 ACPI协议
• G状态(Global System State)• S状态(Sleep state)• C状态(CPU power state)• P状态(CPU Performance state)• D状态(Device state)• T状态(CPU Throttling state)
2023-11-21 15:59:38
2140
原创 ARM 低功耗架构
当遇到Linux没有权限的事情的时候(eg: 当Linux想要关机或者休眠的时候,这涉及到整个系统电源状态的变化,为了安全性Linux内核没有权利直接执行,需要陷入到EL3等级去执行),需要给SCP打报告,SCP审批后去执行。PSCI是工作在non secure EL1(linux内核)/EL2 hypervisor和EL3(bl31)之间的一组电源管理接口,PSCI在EL3实现。PSCI是ARM安全和非安全世界之间的接口,提供了一种发出电源管理请求的方法,在SPF和可信操作系统之间进行通信。
2023-11-21 15:40:13
1857
原创 linux os cpufreq 调频
好像还可以,但我没有/etc/powersave/,不行。查看对应目录下,没有cpufreq。查看可以用的 CPUfreq 模块。可能是关闭CPU频率调整,可能是调频模块没有启动,
2023-11-09 17:06:19
555
原创 amd Ubuntu opencl 安装
安装amd显卡驱动,下载地址:安装成功之后可输入 glxinfo | grep rendering,显示 yes 则显卡驱动安装成功。安装 openCL 头文件OpenCl opencl SDK 下载地址:工具查看显卡对 openCL 的支持情况clinfo重启进入 /opt/AMDAPPSDK-2.9-1/samples/opencl/bin/x86_64 下有很多 demo,可以点击尝试运行,比如运行 SimpleGL 会有类似正弦波的界面出来。
2023-11-08 10:46:24
2620
4
原创 评价指标计算
macro avg 是计算这些指标的宏平均值。不考虑类别样本数量的差异,将每个类别的指标求和后再除以类别总数N,得到各指标的平均值。准确率(Precision):记为P_i,表示被正确预测为类别i的样本数占所有被预测为类别i的样本数的比例。召回率(Recall):记为R_i,表示被正确预测为类别i的样本数占真实类别i的样本数的比例。F1-score:记为F1_i,是准确率和召回率的加权调和平均,用于综合考虑准确率和召回率。micro avg-R = (总体TP) / (总体TP + 总体FN)
2023-05-26 19:29:34
1583
原创 UVM sequence 3种启动方式
在build_phase中将某个sequence配置成某个sequencer的动态运行的phase中(如main_phase)的default_sequence, 那么在仿真执行到main_phase的时候,squencer的default_sequence就会启动。第二类:uvm_do_on类。第一类:uvm_do类。
2022-09-19 19:04:43
4332
1
原创 建立时间和保持时间
setup time是针对Capture edge来说,待传输数据不能来太晚hold time是针对Capture edge来说,新数据不能来太早,以确保待传输数据保持一段时间当前待传输的数据,相对于Capture edge来说,必须早来(setup time)晚走(hold time)
2022-09-18 16:03:16
461
原创 system verilog rand randc constraint randomize
关键词:dist 用来产生随机数值的权重分布。操作符 := 和 :/
2022-09-16 12:40:09
1344
原创 system verilog 处理子进程(关闭/等待/跳转)
如何关闭 fork 里某个子进程?disable语句可以用在task或者块中去终止指定的task或块,包括终止disable语句所在的块或者task。disable也可以用在function中去终止task或者块,但不能用于终止function。当在function中用dsiable语句终止了一个task或者块,而这个task或者块刚好又是这个function的caller,这种情况的结果是未知的。方法:给每个begin end块起个名字,然后就可以在该begin end中关闭该子进程。
2022-09-15 15:34:54
3297
原创 system verilog 数据类型
Verilog 的数据类型主要是线网和变量,即 wire, reg, integer,都是四值逻辑(0、1、x、z)
2022-09-11 19:56:18
864
原创 system verilog randomize_with{ } 重新定义约束
/子类继承父类,会继承属性和方法,所以父类的约束也继承了 constraint c_xy //子类如果想定义一个新约束覆盖父类,则需要定义一个同名约束 {x == 0;y == 0;//在子类约束的基础上随机化 $ display("x = %d" , p . x);
2022-09-11 19:33:42
1161
原创 UVM driver和sequencer握手机制 get_next_item() 和 get() and put()
UVM driver和sequencer握手机制 get_next_item() 和 get() and put()
2022-09-10 21:01:11
4457
原创 UVM TLM FIFO通信 示例
component A 每隔 50ns 往 tlm_fifo 写入一个 transaction,component B 每隔 100ns 从 tlm_fifo 读出一个 transaction。
2022-09-08 19:24:48
589
原创 system verilog 句柄 ref参数传递 C语言指针
systemverilog 中的变量可以分为两种,一种普通变量类型,一种是句柄变量类型。output :报null point 错误。输出结果是: 3 2。
2022-09-07 16:05:10
1905
空空如也
tensorflow 1.x 如何改为 2.x model 的序列模型呢
2021-07-03
tensorflow 网络层 tf.matmul 是什么层呢
2021-07-01
devc++ 断点无效
2021-01-20
specgram函数画不出频域,是没有信息吗
2020-08-26
tsfresh版本与numpy,mxnet版本冲突问题
2020-08-10
新手提问 thresholdpip在哪个库里有呢,为啥安装不上?
2020-06-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅