Tag: algorithm

如何做C饱和加法?

什么是最好(最干净,最有效)的方式来写入饱和加法在C? 如果总和溢出,函数或macros应该添加两个无符号的input(需要16位和32位版本),并返回全位1(0xFFFF或0xFFFFFFFF)。 目标是使用gcc(4.1.2)和Visual Studio的x86和ARM(仅用于模拟,所以后备实现在那里)。

查找整数的位数

find一个正整数的数字的最佳方法是什么? 我发现了这3个基本的方法: 转换为string String s = new Integer(t).toString(); int len = s.length(); for循环 for(long long int temp = number; temp >= 1;) { temp/=10; decimalPlaces++; } 对数计算 digits = floor( log10( number ) ) + 1; 在这里你可以用大多数语言计算log10(x)= ln(x)/ ln(10)。 首先,我认为string方法是最肮脏的方法,但我越想越多,我认为这是最快的方法。 还是呢?

按照外行的说法来摊销复杂性?

有人可以用外行人的话来解释摊销的复杂性吗? 我一直很难在网上find一个精确的定义,我不知道它是如何与algorithm分析完全相关的。 任何有用的,即使外部引用,将不胜感激。

没有使用“/”的分区

任何人都可以告诉我一个有效的方法来执行除法操作,而不使用“/”。 我可以使用类似二进制search的方法来计算log(n)步骤中的整数值。 115/3 57 * 3 > 115 28 * 3 < 115 47 * 3 > 115 . . . 38 * 3 is quotient value ….. 但是还有其他更有效的方法吗?

按顺序检查丢失的数字

我有一个List<int> ,其中包含1,2,4,7,9例如。 我有一个从0到10的范围。 有没有办法确定在这个序列中缺less的数字? 我认为LINQ可能提供一个选项,但我看不到一个 在现实世界中,我的列表可能包含100,000个项目,所以性能是关键

Python中的string相似性度量

我想find两个string之间的string相似性。 这个页面有一些例子。 Python有一个Levenshteinalgorithm的实现 。 有没有更好的algorithm,(希望是一个Python库),在这些限制下。 我想做string之间的模糊匹配。 例如匹配('你好,你所有的人','你好,所有你peopl')应该返回True 假阴性是可以接受的,假阳性,除极less数情况外都不是。 这是在非实时设置下完成的,因此速度不是很关心。 [编辑]我正在比较多个string。 除了Levenshtein距离(或Levenshtein比率)之外,对于我的情况会是更好的algorithm吗?

find数组中的多数元素

大多数元素是发生超过数组大小的一半的元素。 如何在O(n)find数组中的多数元素? 示例input: {2,1,2,3,4,2,1,2,2} 预期产出: 2

快速algorithm绘制实心圆?

我正在使用Bresenham的圆圈algorithm进行快速绘制圆圈。 不过,我也想(根据用户的要求)画一个实心圆。 有没有一种快速有效的方法呢? 布雷森汉姆的相同的东西? 我使用的语言是C.

iOS心率检测algorithm

我试图在我正在开发的应用程序中实现心跳loggingfunction。 这样做的首选方法是使用iPhone的照相机,使用户将手指放在镜头上,并检测videoinput中与用户心脏相对应的波动。 我发现这里有一个很好的起点,下面的堆栈溢出问题 该问题提供了有用的代码来绘制心跳时间图。 它显示了如何启动一个AVCaptureSession并打开相机的灯光,如下所示: session = [[AVCaptureSession alloc] init]; AVCaptureDevice* camera = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; if([camera isTorchModeSupported:AVCaptureTorchModeOn]) { [camera lockForConfiguration:nil]; camera.torchMode=AVCaptureTorchModeOn; // camera.exposureMode=AVCaptureExposureModeLocked; [camera unlockForConfiguration]; } // Create a AVCaptureInput with the camera device NSError *error=nil; AVCaptureInput* cameraInput = [[AVCaptureDeviceInput alloc] initWithDevice:camera error:&error]; if (cameraInput == nil) { NSLog(@"Error to create camera capture:%@",error); } // […]

检测两个图像在视觉上是否相同

有时两个图像文件在文件级别上可能会有所不同,但是人类会认为它们在感知上是相同的。 鉴于此,现在假设你有一个巨大的图像数据库,并且你想知道一个人是否会认为图像X是存在于数据库中的。 如果所有图像都具有敏感的散列/指纹,那么可以对图像X进行散列,并且查看它是否在数据库中是简单的事情。 我知道有关于这个问题的研究,还有一些algorithm存在,但是有没有工具,比如UNIX命令行工具或者我可以用来计算这样一个散列的库,而不用从头开始实现一些algorithm? 编辑:从findimagedupes相关代码,使用ImageMagick try $image->Sample("160×160!"); try $image->Modulate(saturation=>-100); try $image->Blur(radius=>3,sigma=>99); try $image->Normalize(); try $image->Equalize(); try $image->Sample("16×16"); try $image->Threshold(); try $image->Set(magick=>'mono'); ($blob) = $image->ImageToBlob(); 编辑: 警告! ImageMagick $ image对象似乎包含有关读入的图像文件的创build时间的信息。这意味着即使对于相同的图像,如果在不同的时间检索到的图像,blob也会不同。 为了确保指纹保持不变,使用$ image-> getImageSignature()作为最后一步。