Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

算法学习—二分查找1、二分查找的概念当我们碰到需要获取数列中的元素或者利用数列中的元素时,最快想到的方法就是通过顺序查找,一个一个找下去,这种查找方式基本上市从头开始到末尾,将所有的元素都找一遍,直到找到了想要的元素。这种方法因为是需要查找所有的元素,所以当元素数量太多的时候,就会出现超时的情况出现,效率十分低下,所以一般实际的情况下我们不是用顺序查找。取而代之的,是二分查找。二分查找顾名思...

算法学习—回溯法1、回溯法的概念回溯法,顾名思义就是不断地重复枚举结果集,直到找到我们所要的结果。这种思想类似于暴力搜索,但是又与暴力搜索有着不同,回溯法使用了剪枝函数,除去了一些错误的解法。回溯法在搜索的过程中,如果发现这一步的结果不符合结果的要求,则会放弃下面的查找,回溯到上一步,更换一种新的查找方式,它其实是一种选优搜索,根据选优条件逐步搜索,以达到目标。回溯法中满足回溯条件的点我们称...

leetcode设计模块1、子矩形查询题目lettcode-1476题难度:中等 解题思路按照题目的要求,我们需要根据输入的坐标,拿到该坐标的值。以及根据输入的两个坐标和一个值,修改两个坐标之间的值为所给出来的值。所以实现这两个功能首先我们需要一个二维数组。拿到坐标的值并不难。主要是修改两个坐标之间的值。因为输入的两个坐标,假如是(1,1)和(3,4) ,所以可以看出来纵坐标是修改1和4之间...

最小栈题目lettcode-155题难度:简单 解题思路题目基本上就是要求找出一个栈中最小的值,通过java中内置的栈的方法即可实现这一目标 首先我的想法是通过遍历比较所有的值来找出最小的那个值,但是这样子消耗了较多的时间,而且题目希望是设计一种栈的结构,而不是直接用栈的方法。 所以后面换了一种新的方法,就是使用链表来实现,这样子的效率是较高的,相比于之前的方法,用时整整少了200多毫秒 具...

设计hash集合、hash映射题目1lettcode-705题难度:简单 解题思路既然说是一个HashSet,所以他就是一个不可重复的集合,就意味着在该集合中每个元素只能出现一次。 所以说我们就可以用boolean类型的数组来模拟出这样的一个集合 数组的索引就对应了set的key,数组所对应的布尔值就是set的value,当其为true1时就说明存在,否则就是不存在 具体实现方式如下 具体代...

栈实现队列、队列实现栈题目1、用栈来实现队列lettcode-232题难度:简单 1.1、 解题思路栈是一个先进后出的数据结构,而队列是一个先进先出的数据结构,所以我们想要用栈来实现队列,就必须要用到两个栈,第一个栈出栈到第二个栈中,第二个栈再进行出栈,就可以实现队列先进先出的功能。 具体代码如下 1.2、具体代码123456789101112131415161718192021222324...

最近的请求次数题目lettcode-933题难度:简单 解题思路从题目上来看,一时半会看不出来是什么意思。 其实所输入的数字t就是一个毫秒数,根据这个数来判断3000毫秒之前的数,如果小于3000毫秒之前的就删除小于的那个。 所以当我们输入3002时,3000-3000=2,而1小于2,所以1就会被删除。 所以说这个题是一个先进先出的方式,所以我们可以使用队列来实现。 具体实现方式如下 具体...

设计有序流题目lettcode-1656题难度:简单 解题思路既然是一个有序流,那么我们就可以将其存储到一个数组中,然后通过数组下标对所在的值进行访问。所以我们首先创建一个长度为n+1的数组,将value的值存在其中。将下标指针的值设置为1,然后在执行时进行循环加1 接下来就是循环读取的过程:当我们在数组中插入一个数据的时候,就判断一个数组下标是否小于n,以及当前下标处的value值是否不为...

设计停车系统题目lettcode-1603题难度:简单 解题思路每种车都有每种车所对应的一个车位,而且不能停到其他车的车位上面去,所以说我们需要三个变量将每种车的车位数量存起来。然后在有新车进来时,判断车辆的类型,然后查找相应的停车位,如果有车位就返回一个true,相当于停车成功,然后该类型的车位减去一个,如果车位为0,则不允许停车,返回false 具体代码12345678910111213...

罗马数字转整数题目lettcode-13题难度:简单 解题思路对于每个罗马符号所对应的数值,我们可以将其用一个HashMap存起来,将其字符作为key,以及数值为相应的value 在方法中对输入的字符串的所有字符进行遍历,get到所对应的值,并拿到它的后一位数的值,如果当前符号的值大于后一位符号的值,则进行+运算,否则-运算。 具体代码1234567891011121314151617181...