- 博客(815)
- 资源 (2)
- 问答 (3)
- 收藏
- 关注
原创 leetcode 438 找到字符串中所有字母异位词
题中要求我们找出所有的异位词并进行存储,而本题我们只需要找出异位词对应的索引值。因此,我们无需用到字典,只需使用列表即可。建于代码并不复杂,这里不做过多说明,读者可以自行理解,如果有问题可以在评论区留言。
2024-08-23 17:33:00
436
原创 leetcode 3 无重复字符的最长子串
那么则进行循环,我们使用两个变量进行循环,用来创建一个动态区域,然后判断位于这个动态区域之后的字符是否包含在这个动态区域之内,如果包含,就中断,如果不包含,就把这个字符加入动态区域中,接着判断。如果字符不在字典内,则用字符作为字典的键值记录当前右侧指针所指向的位置,并且记录 右侧指针位置-左侧指针位置 和。本题重点是创建一个动态区间,然后判断位于这个动态区间之外的字符是否被包含在这个动态区间范围内。值的大小,记录更大的值,循环结束后返回。就可以得到无重复字符的最长子串的长度。的情况要重点进行讨论。
2024-08-23 15:29:56
391
原创 leetcode 49 字母异位分词
首先,我们创建一个字典对象,然后遍历整个字符串列表,并且使用sorted()函数对字符串列表进行排序,所有的异位分词经过排序后它们的组成和顺序会趋于一致。但是需要注意的是sorted对字符串进行排序后会变成一个由单个独立字符组成的列表,我们需要使用join将它们重新连接为字符串。进一步我们判断组合后的字符串tmp是否位于我们创建的字典对象dict1中,如果不在,就将原始位于strs中的字符串以值的方式添加进入字典,这里特别需要注意的一点是,一定要以列表类型进行添加。对应下面代码中的。如果tmp在dict1。
2024-08-22 11:07:29
222
原创 leetcode 80 删除有序数组中的重复项 II
只是此时因为要求保留重复元素两次,我们的左侧指针可以从第二个数据开始,且右侧指针需要和两个元素的值进行判断。,我们观察到数组是按照顺序排列的,因此,我们可以直接对比右侧指针所指向数据与左侧指针值。的值所指向数据是否相等,相等,则右侧指针右移,不相等,则左侧指针值。并存储右侧指针当前指向的数据。仍旧使用双指针, 思想与。
2024-08-22 10:03:49
445
原创 leetcode 26 删除有序数组中的重复项
本题使用双指针解法即可,右指针移动,若右指针所指向元素与左指针指向元素一致,右侧指针继续右移,若右指针指向元素与做左指针指向元素不一致,左指针位置。本题目在理解了双指针后难度较易,这里不再过多说明了。,且令左指针处元素等于右指针处元素。
2024-08-22 09:50:22
288
原创 碱基 A 和 C 方式排序
在生物学中,很多时候我们需要对碱基序列进行排序,这里分别介绍。根据排列组合公式可得总共的排序组合数为。根据排列组合公式可得总共的排序组合数为。(可重复排序) 排序和。(不可重复排序) 排序。
2024-08-21 16:50:02
423
原创 Python 算法------列表对象逆向位移一次后形成的新列表
一文中我们介绍了列表对象中的各元素正向移动一个位置后的新列表算法。这里介绍列表对象逆向位移一次后形成的新列表。逆向移动时,相较于正向移动更加抽象,读者可自行理解。
2024-08-19 13:36:00
180
原创 Python 算法------列表对象正向位移 n 次后形成的新列表
一文中我们介绍了该如何获取列表对象正向位移一次后形成的新列表。本文我们将在此基础上介绍如何获取正向位移。这里我们采用文章中给出的方法二。最简单的方式就是在之前的基础上外层加入一个。
2024-08-19 13:11:19
314
原创 Python 算法------列表对象正向位移一次后形成的新列表
了,这样做的好处就是可以使得列表对象的索引值头和尾连接起来,方便一些其他的操作。那么我们有没有可能不创建新的列表对象,而完成这一操作呢?今天遇到了一类算法题目,本算法属于个人自己想到的一个算法,使用。库的话可以直接秒掉这个题目,但是此处我们仅使用。中列表对象的最后一个元素的索引值是。对于这个题目我们该怎么进行呢?这里其实我们就可以理解为什么。至此,这一算法我们便完成了。的内置函数来做这道题。
2024-08-19 11:14:24
234
原创 i3.Waveguide 与 i3.RoundedWaveguide 的区别
参数指定其路径弯曲的半径。从而将弯曲部分变得平滑。参数,绘制出来的图像是什么样子呢?类中继承的,意味着其本质上具有了所有。的性质,二者属于包含关系。这里我们将重点介绍一下。这就是二者最大的区别。
2024-08-16 15:37:36
25
原创 Ports Number of field profile samples 参数设置
如果去官方论坛查看解释,往往会被搞得云里雾里。这个参数实际上表示的是仿真时需要的模式数量。比如,我们要进行但单模式仿真,如上图所示,我们选择的是。如果我们的仿真涉及高阶模式,那么可以根据高阶模式的数量设定这个值,如果只看基模,那么我们需要设置其为。端口中的光束模式进行设定,很多时候我们会遇到一个名为。仿真时,通常我们会对。
2024-08-16 15:02:02
28
原创 transition curve
表示在测量中,切向部分和圆形曲线中间的光滑过渡部分。在绘制图像的时候遇到了一个说法叫做。,这里特来对这个名词的含义进行记录。
2024-08-16 14:54:05
24
原创 Python __all__ 魔法方法
的形式,这种导入方式会引入一些可能无法预测的问题,因此,这个知识点大家了解即可。方法,本人每次读到都会比较困惑,这里特来记录一下这个的用法。y 中所有的变量,然后进行打印就可以得到对应的结果。并没有实际意义,因为在导入模块中,我们不推荐使用。,它也可以用来存放函数或者类对象。很多时候写代码,总是会遇到有人使用。变量没有被定义,因为我们定义的。我们又有另外一个文件,其名称为。比如我们这里有一个文件,名为。变量,因此,我们可以在。此时,我们看到,提示我们。
2024-08-16 14:48:34
315
原创 PSO 算法实例(手动推导过程)
关于 算法的基础概念可以参考 Particle Swarm Optimization 基础概念。本文我们将举一个示例对这个算法进行详细说明。这里我们再来重温下算法步骤,并且我们给出更为具体的算法操作步骤。使用 算法找出如下方程的极大值。使用四个粒子,且各粒子的初始位置是 x1=1.5x_1=1.5x1=1.5,x2=0.0x_2=0.0x2=0.0,x3=0.5x_3=0.5x3=0.5,x4=1.25x_4=1.25x4=1.25。假设 w=0.8w=0.8w=0.8,c1=c2=2..05c
2024-08-15 16:31:02
415
原创 Particle Swarm Optimization 基础概念
它涉及了一组粒子或者代理人,通过在空间中移动来寻找给定问题的最优解。比如,求解一个函数表达式的全局极值,可以是全局最大值,也可以是全局最小值。上述表明,每一次粒子做完运动后,会根据当前群组的最优解以及单个粒子的最优解对自身速度进行调整,从而进行下一次的迭代运算。是加速度银子,与单个粒子和群整体相关。表示单个粒子对它周围粒子的可信度。叫做惯性,可以理解为粒子上一次运动的速度。叫做社会影响,粒子群最佳位置的影响。被叫做个人影响,即单个粒子的影响。表示单个粒子对自身的可信度,粒子的运动可以用下图来描述。
2024-08-15 14:50:32
132
原创 IPKISS 自定义 PCell 创建形状函数
均可以用来创建结构,后续教程中我们会给出具体对应示例。对象,并且需要明确地指定其所在地图层。中,有三类命令可以用来创建结构。中几何图形的基础形状。这里需要特别注意,第一个。中还有其他方式,比如。子类表示被包含,详见。
2024-08-14 09:49:30
38
原创 IPKISS Tutorial 目录(目前 45 篇 持续更新中,部分教程尚未制作成目录)
导入 pdk导入IPKISS模块IPKISS 版图设计规则及技巧制作自定义PCell的步骤使用 i3.PCell 绘制矩形波导 PCell使用 i3.PCell 绘制带有端口的直波导器件IPKISS Definition Properties 表格查询
2024-08-13 16:23:34
272
原创 IPKISS 查看si_fab 中可使用的 template
是一个特征信息,包含了波导要被绘制的层,以及波导的宽度,名称等信息,且它也包含了端口信息。对于一个完整的光学链路,各个波导之间是需要连接的,这个连接正是根据。我们先来介绍一个概念,有些小伙伴可能会比较困惑,有时候会听到。后,编译器会为我们过滤掉一部分内容,留下我们需要的。存放的端口信息完成的,而波导之间的连接线被称为。,即为我们之前看到的,且它有三个常用固定的。接着,我们可以看到,对应后三个。描述的波导宽度是可以手动修改的,的说法,云里雾里,不是很懂。,我们可以在这一页的上方找到。的说法,而有时候又是。
2024-08-13 15:17:10
151
原创 IPKISS Coord2Property 的用法
运行上述代码,我们可以生成一个下图所示的直波导结构。变量,最终我们将直波导放置在了这个位置,对于。注意,在我们的代码中,我们定义了一个。对于其坐标,横坐标可以用。可以使用后一种写法的原因是。中本质上是一个元组。
2024-08-12 15:17:29
135
原创 Lumerical 计算群延迟
这个不同寻常的事情也是作者本人无意中发现的,如果有小伙伴也发现了这个问题,不用大惊小怪,继续等待仿真执行完毕即可。),作者本人的其他专栏中有介绍,读者也可以自行谷歌。结构,我们创建了两个。,并且如下图所示勾选了。此时是未被勾选的状态。选项,我们会发现此时。关于什么是群延迟 (
2024-08-12 14:47:26
31
原创 FDE Solver 的 enabled 选项是不开放的
并且,不同于结构组件,对于结构组件,我们通常可以使用如下脚本将其设置为不启用状态。我们通过如下脚本设置其为不启用状态后, CAD 显示界面将是一片漆黑。在 Mode 工程文件中,只能添加一个。比如,我们这里有一个三角型结构。属性是不对用户开放的。中的组件显示为灰色。但是,这种设置方式对。
2024-08-07 15:06:38
45
原创 Lumerical 光束重叠率计算
看起来我们获取到了不错的结果。接下来,我们在我们感兴趣的模式上单击右键选择。一文中我们介绍了如何进行光纤模式的仿真。本文,我们将继续使用。中我们之前存放的模式和与该模式对应的新获得的模式,在。构建完成光纤后我们可得到如下所示的结构图,我们沿用。放置光纤端口处,此时其尺寸我们设置为。且为了获取更为精确的仿真结果,我们将。进行同样的操作进行仿真并查看结果。可以看到,此时的重叠率上升到了。来进行光束重叠率计算说明。网格的最大步长值设置为。可以看到,仿真结果与将。我们将新的模式也添加进。此时,光束重叠率来到了。
2024-08-05 15:07:28
143
原创 Lumerical 光纤模式仿真
这一次可以看到,结果并不理想,模式四周区域白色轮廓发生畸变,结果也成了不合理模式(有效折射率判断),因此,16 * 16 um 的大小是一个能够获取较好结果的一个选择。关于光纤的相关知识,这里默认大家知道,不知道的小伙伴可以查看作者的其他专栏。,那么光波的有效折射率应该大于纤芯折射率且小于包层折射率,可以看到,此时符合要求的有效模式只有一组。可以根据需求调大一些,本人由于想要精确的结果,因此,特意将网格尺寸放的非常小。模式,剩下的模式都是不合理的模式,我们不予理会即可。我们之前设置纤芯的折射率为。
2024-08-05 10:43:07
191
原创 Python 实现光波带宽换算(完结)
我们知道光波带宽表示有两种形式,一种是光谱,一种是频谱,光谱是以波长为横坐标,光功率为纵坐标进行表示,频谱是以频率为横坐标,光功率为纵坐标表示。那么如果我们知道了光波带宽的光谱表示,该如何求解其频谱表示呢?本文属于作者个人私货,转换光波带宽,从。
2024-08-01 10:17:14
62
原创 IPKISS 使用 AMF PDK 创建脊形波导结构并导入 Lumerical 中产生对应仿真结构
如果不设置这个参数,程序就会一直卡在执行界面而不会产生结果。运行后的结果我们这里就不做展示了,与。至此,我们完全说明了这个问题。,此时我们不再使用参数。来创建脊形波导结构。
2024-07-30 14:44:21
49
原创 IPKISS 使用 Si_fab PDK 创建 Euler Bend 波导结构并导入 Lumerical 中产生对应仿真结构
对于减少波导的弯曲损耗有一定的作用,这里我们介绍如何通过。值,就可以生成不同的仿真结构,从而获取不同的仿真结果。一文中,我们已经介绍了直波导的构建,对于。的构建方式也是一样,仅仅需要对构建的。可以看到,此时我们已经获取到了。
2024-07-30 14:28:07
144
原创 IPKISS 使用 Si_fab PDK 创建脊形波导结构并导入 Lumerical 中产生对应仿真结构
表示我们让程序在运行构建结构时不打开用户界面,而直接在后台默默运行,因此,我们可能需要等待更久一些时间,这里的。然而我们会发现,这个结构看起来可视化效果并不好,接着我们可以查看左侧的 Objects Tree 中的内容。软件用户界面,并在其中对当前仿真结构自动进行构建,构建完成后程序会自动保存并关闭。端口数量是两个,但是对于一个直波导仿真结构,通常我们在。对结构的构建和一般的构建结构方法不同,比如这里,对于。中创建仿真结构,然后将对应的结构导入到。有一个非常好用的点,就我们可以通过。
2024-07-30 12:23:37
52
原创 IPKISS visualize(), visualized_2d() 和 cross_section() 函数
该函数是用来以可视化的方式呈现虚拟制造的布局的自上而下的视图。包括层,线之间的关系,实际上是一个三维视图。是一个主视图设置函数,最终的显示结果仍然需要通过。中,存在几个视图函数,这里我们将对它们进行介绍。最终我们还需要在创建了路径之后还需要通过。中,我们绘制版图通常是通过。最终会被用来获取掩模版 (创建一个沿着一条路径的。
2024-07-29 10:45:10
163
原创 IPKISS 直接创建波导
的方式创建波导,这里我们将介绍如何直接创建波导。,表示此时我们先不显示图像,等到后面再运行。我们之前介绍的都是如何使用创建。的时候一并同时显示。
2024-07-29 10:11:08
41
原创 IPKISS WireWaveguideTemplate 类详解
如上图所示,波导包层被定义为一个 “包层区域”,在包层区域内,要么刻蚀一个沟出来(真空包裹波导),也么使用其他材料包裹波导。波导芯被定义为一个 “芯区域”,芯区域被用来绘制波导。类,本人对于这个类是比较陌生的,因此,这里特来记录一下。波导可以被在不同的过程中被绘制,默认过程是波导工艺(该类是用来定义线状波导的。目前这一参数用于做什么,本人尚未研究清楚。这部分的原因后续有时间了我们再进一步研究。在波导上绘制控制形状。波导包层的工艺,默认的是。, 默认值是当前器件的。:用来定义波导芯的层。
2024-07-26 17:44:28
34
原创 Clothoid 回旋线公式求解
(5)式与(6)式就可以被转化为菲涅尔积分。因此,比起使用数值方法计算(3)式与(4)式描述的积分,使用一些数值方法计算(1)式与(2)式描述的初始值问题可能更容易。我们使用数值方法求解问题(1)式和(2)式去获取想要的回旋线参数。在(3)式与(4)式中的积分已经被研究过了。通过令(5)式与(6)式中的自变量满足关系。但是我们并没有介绍如何求解(1)式和(2)式。通过(12)式和(13)式即可求解我们想要的回旋线。从(1)式和(2)式不难看出,对于一个给定的参数。我们只需要计算(1)式和(2)式即可。
2024-07-24 12:02:58
54
原创 Clothoid 应用实例------连接两条直线段
接下来,我们将详细说明计算这些回旋线的算法,同时包括设计路线版图。考虑我们想要连接两条直线段,这两条直线段相交于点。为了设定方向,我们假设已知两个点。作为初始点,使用下面的方程计算回旋线的参数。两个回旋线上的匹配参数不带上标。一旦我们知道了能够设定的最小的曲率半径。,我们可以计算出上图中回旋线的合适长度。的圆弧连接,必须意味着圆弧的圆心角。此后,我们用上标 1 表示回旋线从。,我们就会寻找两条回旋线,一条从。出发,我们可以计算回旋线的长度。我们可以计算出位于区间范围。计算在两条直线之间的角度。
2024-07-24 09:47:50
254
如何在 QLineEditor 中按顺序显示提示信息?
2024-01-23
计算字符串重新排列数
2022-05-10
Python 如何实现单行动态打印
2021-11-26
如何在当前文件中设定另一个文件中某个函数参数的默认值
2021-11-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人