请教一个算法问题时间复杂度要求是(1)

问题描述

请教一个算法问题时间复杂度要求是(1)

做项目的时候有一个处理大致是这样的:需要每次插入map;每次输入是(1,0),(2,0),(3,0);(2,1),(3,1)。。。当key是新添加的或者key对应的count大于前一次就要把这个key拿出来,时间复杂度要求是O(1), 请教大家有没有好的方法

解决方案

不可能事件复杂度是1,最低是LogN,不过这个很接近1了。除非你有无限制的内存,然后直接地址映射。

解决方案二:

一个数组中只有0,1,2三个元素,进行排序,要求时间复杂度为O(n)

解决方案三:

一般用hash,不过占用空间大,近O(1)

时间: 2024-10-04 09:39:45

请教一个算法问题时间复杂度要求是(1)的相关文章

请教一个算法问题,有两个数组A,B,判断A中是否至少有一个元素和B中元素相同

问题描述 最笨的办法当然是二层嵌套循环,但觉得应该有更好的方法,但是着实想不出来,想听听大家的意见,大家帮帮小弟i.estring[]A={"X","Y","Z","W"};string[]B={"X","E","Z","U","V"};只要发现B中有一个A的元素就可以 解决方案 解决方案二:数据量不大(100条内100*100

请教一个算法问题,用C#如何实现。

问题描述 有队列A,里面有X个对象,每个对象的值为1-100不等.有队列B,里面有Y个对象,每个对象的值为1-100不等.两个队列中的对象个数是不确定的.需要从A队列中按序号取出一个或多个对象出来,其对象的数值总和与队列B中按序号优先级取一个或多个对象的值相等.匹配方式优先级:1.A队列中按序号大小优先顺序取一个对象能与B队列中也按序号大小优先级取对象匹配,这属于1对1匹配.最优先匹配的.2.A队列中所有单个对象值无法与B队列中的单个对象值匹配的情况下,再从A队列中按序号大小优先顺序取一个对象能

请教一个算法问题

问题描述 计算一下当前时间到周三中午12点还有多少时长?哪位帮忙给写个伪代码, 解决方案 package com.kuke.update.timmer;import java.util.Calendar;import java.util.Date;import java.util.TimerTask;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import j

算法的时间复杂度(一)

转自:http://www.cnblogs.com/cj723/archive/2011/03/05/1971640.html 2.9 算法的时间复杂度 2.9.1 算法时间复杂度定义         在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级.算法的时间复杂度,也就是算法的时间量度,记作:T(n) = O(f(n)).它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为

赋值-请教一个php自由增减的小算法。

问题描述 请教一个php自由增减的小算法. $i在0~30 的时候,$j是自由增减的,$i==30的时候,$j的值也一定要自由增减到30,不要直接就赋值30,这个算法怎么写呢? 解决方案 问题问的不是很清楚,$j自由增减是如何自由增减呢? 算法大体是这样: 1.先判断$i的值,是否在0~30里面 2.如果$i在0~30里面,$j自由增加,如果$i ==30,判断$j是否为30,是,结束代码,不是,$j++或$j-- 解决方案二: 我是新手,什么是自由增减呢,是随机增加一个数还是什么?如果是这样可

算法 选择排序-请教一个选择排序的算法问题

问题描述 请教一个选择排序的算法问题 你好, 我刚刚开始接触JAVA, 问一个选择排序的问题. private static void SelectionSort (int[] arr) { for(int i=0; i for(int j=i+1;j if (arr[i] > arr[j]) { int m; m = arr[i]; arr[i] = arr[j]; arr[j] = m; } } } } 这个方法正确,但是交换次数多了,所以我想改进一下. private static voi

c语言-请教一个C编程 打印输出图像的算法编程

问题描述 请教一个C编程 打印输出图像的算法编程 解决方案 大概就是这样,建立笛卡尔坐标系. 用point()函数里的嵌套for循环来输出每一个字符,然后把代表坐标的i和j传递给getChar()函数通过坐标来决定输出的是什么字符. 解决方案二: char getChar(int x,int y,int n) { if(x<0) x=-x; if(y<0) y=-y; if(x>y) { if(n-x<=2) return 'x'+n-x; else return '0'+n-x-

请教一个应用推荐算法

问题描述 请教一个应用推荐算法 看到百度一个关于应用推荐的算法,算法描述如下: 一种在线应用搜索方法为步骤: 解决方案 比如说,产生一个0-9的随机数,按理说结果为1的可能性为0.1,结果为2也是0.1,等等. 但是我们可以制造一个随机数发生器,产生1的可能性为0.5,产生2的可能性为0.25,-- 这就是不等概率. 不等概率随机数的生成可以通过标准随机数生成算法衍生出来. 比如产生一个0~1的浮点数,那么产生值在0~0.5的概率是0.5,0.5~0.75的概率是0.25,--,据此判断,并且返

sql-求助:请教一个SQL语句的算法

问题描述 求助:请教一个SQL语句的算法 业务逻辑:在财务中,在一个结算周期内的结算金额没有达到结算限额,则此次不做结算,将此次结算金额累计到下一个结算周期内结算,直到满足结算限额才结算.其中每一个合同的计算限额不同. 举例:已知的合同号001的结算限额为200 ,合同号002的结算限额为300 合同号A 结算日B 结算金额C 想得到的结果D 001 1.1 100 0 001 2.1 110 210 001 3.1 120 0 001 4.1 130 250 001 5.1 140 0 001