草庐IT

现代优化算法

全部标签

java - 我们如何优化 ArrayList 上的插入?

其实这是前几天问的面试题。面试官要我表达ArrayList和LinkedList的区别,要求优化ArrayList的插入操作,换句话说,重新实现add(intindex,Eelement)当然可以牺牲get(intindex)操作的复杂性。我的答案是将数组分成k个子数组,并更新一个计数数组,表示相应子数组中已有的元素数。并且每个子数组的内存都是动态分配的,具有预期的初始大小。当我需要向ArrayList中插入数据时,我可以先定位到一个子数组,然后在一个小数组内进行操作。如果插入不是太频繁或者索引是均匀分布的,插入的时间复杂度可以平均为O(log(k)+n/k+k),其中log(k)表示

【建议收藏】新到手的电脑Windows10/11系统优化、使用规范和技巧及软件推荐,提升范电脑性能和体验

目录一、了解电脑1.查看电脑和系统的基本信息 2.电脑测评二、Windows10/11系统优化及设置1.控制面板、回收站等桌面图标显示设置2.任务栏管理3. 桌面图标排列4.卸载程序5.关闭P2P分享(传递优化)6. 电设置脑为高性能7.  删除存储中的临时文件8. 磁盘清理9.卸载迈克菲三、软件推荐1. 安全防御软件:火绒安全软件2. 压缩软件:7-Zip3.浏览器推荐:GoogleChrome(谷歌)浏览器4.下载器:IDM5. 文件搜索:Eveything6.磁盘管理:DiskGenius7.文本编辑:VisualStudioCode8.桌面壁纸引擎:WallpaperEngine9.翻

华为OD机试 - 计算面积(Java) | 机试题+算法思路+考点+代码解析 【2023】

计算面积绘图机器的绘图笔初始位i在原点(0.0)。机器启动后其绘图笔按下面规则绘制直线:1)尝试沿着横向坐标轴正向绘制直线,直到给定的终点值E,2)期间可通过指令在纵坐标轴方向进行偏移。井同时绘制直线,偏移后按规则1绘制直线;指令的格式为XoffsetY。表示在横坐标X沿纵坐标方向偏移,offsetY为正数表示正向偏移,为负数表示负向偏移。给定了横坐标终点值E.以及若干条绘制指令。请计算给制的直线和横坐标轴。以及X-E的直线组成图形的面积。输入输出描述:输入模述:首行为两个整数NE。表示有N条指令。机器运行的横坐标終点值E.接下来N行。每行两个整数表示-条给制指令xosorr。用例保证横坐标X

算法训练第二天|977.有序数组的平方、209.长度最小的有序数组、59.螺旋矩阵2

977.有序数组的平方题目链接:力扣思路:同样使用双指针的方法,这样就可以只遍历一次原数组。可以考虑需要按照一个顺序来遍历,那就是从大到小或者从小到大,我选择的是从大到小。不难看出,原数组将每个数平方后,呈现从两边到中间逐渐减小的规律。所以使用一个指针指向原数组最左端,一个指向最右端,比较那边的数大,就是原数组中最大的数。我们新建一个数组,用来存放已经排好序的数组,按照从大到小放数据应该是从数组尾开始放。时间复杂度:o(n)classSolution{public:vectorsortedSquares(vector&nums){//这个个地方用.size()函数来求数组的长度,注意是vect

java - 通过剪切任意角度旋转(Paeth算法)

我正在尝试编写3剪切旋转算法的Java实现describedbyAlanPaeth.问题不在于值的计算,而在于将旋转的点拟合到图像网格上。在论文中,旋转是由以下计算给出的3个连续剪切执行的:x=x+α*yy=y+beta*xx=x+alpha*yAlpha和Beta是根据给定的角度(theta;以弧度为单位)通过以下公式计算得出的:beta=sin(theta)alpha=-tan(theta/2)使用这些公式,点围绕坐标系的中心旋转。为了更正负值,我将各自轴的最小计算坐标添加到每个点,以便最小值始终为0。到目前为止我的Java实现:ShiftPoint[]val=newShiftPo

java - 不了解中位数算法的中位数来查找第 k 个元素

下面是我的代码,用于尝试理解中位数算法的中位数(使用大小为5的block)。我了解如何获取输入的中位数,但我不确定如何对block进行编码以继续递归输入,直到我得到中位数为止。然后在得到那个中位数之后,我不确定如何将它用作一个枢轴来丢弃无用的信息来划分输入。getMediansArray返回一个大小为ceil(input.length/5)的数组,而getMedians仅返回数组的中位数(仅用于长度publicstaticint[]findKthElement(int[]input,intk){intnumOfMedians=(int)Math.ceil(input.length/5.

java - Gradle Proguard 优化时出现大量内存错误

我为我的Java应用程序运行./gradlewproguard--debug来检查为什么它没有在数小时内完成,这就是我所看到的:17:14:11.431[INFO][system.out]Optimizing...17:14:13.537[DEBUG][org.gradle.process.internal.health.memory.MemoryManager]EmittingOSmemorystatusevent{Total:8589934592,Free:2029916160}17:14:13.538[DEBUG][org.gradle.launcher.daemon.serve

java - 如何表示遗传算法中时间表问题的时间表?

对于遗传算法,通常基因符号如下:PARENT1:101101010101001001001001110011100110101011101101PARENT2:010100111011010101110101001001101011001010010110所以交叉,突变可以像这样用这种表示来完成:选择交叉点:PARENT1:101101010101001001001001110011100110101011101101PARENT2:010100111011010101110101001001101011001010010110执行交叉产生一个child:CHILD:101101010

java - 为什么 javac 不优化空的 try-finally block ?

我写了一个类classtest1{voidfoo(){}}还有一个有很多try和finally语句什么都不做的类:classtest2{voidfoo(){try{}finally{}try{}finally{}try{}finally{}try{}finally{}try{}finally{}}}使用javac(sun-jdk-1.6.0.37,linux-3.8.13-amd64)编译它们并与od比较文件。test1.class000000006614307154102016306256407216302006100517307301200000200645570201440675

java - JIT 优化和弱引用

我有以下代码:privatefinalList>slaves;publicvoidupdateOrdering(){//removesvoidweakreferences//andensuresthatweakreferencesarenotvoided//duringsubsequentsortListunwrapped=unwrap();assertunwrapped.size()==this.slaves.size();//****couldbereimplementedwithoutusingunwrap()****Collections.sort(this.slaves,CM