![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
刷题
文章平均质量分 55
leetcode里面刷题类型
万小猿
这个作者很懒,什么都没留下…
展开
-
347.前K个高频元素(力扣leetcode) 博主可答疑该问题
注意点:1.出现次数之类的字眼一看就是Hash表,跑都跑不掉。2.Hashmap<x,y> x,y不能是基本数据类型,必须用引用数据类型,因为封装类才有hashcode()和equals()方法,基本数据类型是没有方法的。、3.经典生成重复次数的语句。步骤:1.遍历数组,用哈希表记录每个数字出现的次数,然后形成一个【出现次数数组】。找出原数组的前k个高频元素,就相当于找出【出现次数数组】的前k大的值。2.利用最小顶堆,看顶堆的出现次数是否比新加入的更大...原创 2021-01-12 18:35:12 · 279 阅读 · 0 评论 -
147.有序数组的TwoSum(力扣leetcode) 博主可答疑该问题
1. 找数尽量用指针,这样移动方便,一般很少挨着一起找,一般都是两头,或者一个先走几步,然后另一个再走1.先计算两个的大小。2.相等直接返回。3.小了,就往大的方向走(右走)4.大了,就往小的方向走(左走)如有疑问可加QQ群讨论:725936761 欢迎大家一起讨论进步。...原创 2021-01-13 14:32:38 · 456 阅读 · 0 评论 -
633.平方数之和(力扣leetcode) 博主可答疑该问题
为了确定两个,大数b的起始值,所以要从c的平方根开始找,那么某个数的平方根有两种方法:1.二分法,0-c去中间数m,看M的平方是否小于m/2,在找,知道找到位置,相差一个很小的数。2.牛顿法,利用牛顿公式,x0与x是非常近似的这个为终止条件,然后一直循环得到x范围要选好,对数操作的时候如有疑问可加QQ群讨论:725936761博主免费答疑欢迎大家一起讨论进步。...原创 2021-01-13 14:51:24 · 270 阅读 · 0 评论 -
345.反转字符串中的元音字符(力扣leetcode) 博主可答疑该问题
我写的代码:注意点:1.字符串需要改成字符数组才能索引对应元素。2.字符数组直接可以New String变成String,字符串数组只能通过循环解决3.String 类中还有一个NB的方法找子字符,int indexOf(String str(一个字符)); 返回第一次出现的指定子字符串在此字符串中的索引。4.交换完了一定要继续下一步否则一直卡着成为死循环5.字母的有大小写分别。通过的代码:indexOF 要么是"a" 要么是字符数据这样。不能"a[...原创 2021-01-13 14:58:47 · 254 阅读 · 0 评论 -
680.验证回文字符串(力扣leetcode) 博主可答疑该问题
注意点:1.满足要求后,移动要两个指针都要移动。2.注意后大括号一般都有两个以后因为一个是Soluntion的,一个是要写的合法,如果显示}就是后括号忘记打了。3.回文数删一个还是回文数,这明显的递归调用,而且只是一次的递归,不香吗。如有疑问可加QQ群讨论:725936761博主免费答疑欢迎大家一起讨论进步。...原创 2021-01-13 15:04:26 · 207 阅读 · 1 评论 -
88.合并两个有序数组(力扣leetcode)博主可答疑该问题
做题难点:1.思考怎么讲nums1扩容,要把2合并到1去,但是数组一旦确定一般只有复制到新数组去,题目没有看清楚2.注意for循环里有一些自加的那种,而且这个自加还放在了条件判定上。这个就很容易越界,价格防止越界条件,必须还要放在前面,否则也会先越界,再判定,第12行j<n3.其中一个数组是合并数组的长度,那么有一段肯定是无用数组,所以处理此数组的时候一定要考虑有效数组部分。第17行,i<m记录下。。官方较好的解答,还不用。内存空间。思路:其中有个存储数组,既然...原创 2021-01-13 15:10:08 · 202 阅读 · 0 评论 -
141.环形链表(力扣leetcode)博主可答疑该问题
注意点:1。看见重复的就想到Hashset<T> =new Hashset<T>(),因为自动识别出重复的,并剔除。19行的add,要是他的对象,传入对象.值是没有用的。hashset 是无序、不可重复的、允许有Null.它是由Haspmap实现的如有疑问可加QQ群讨论:725936761博主免费答疑欢迎大家一起讨论进步...原创 2021-01-13 15:16:57 · 185 阅读 · 2 评论 -
524.通过删除字母匹配到字典里最长的单词(力扣leetcode) 博主可答疑该问题
注意点:1.List的使用,获取"apple"的字符串,list.get(1)2.如果是查询等,一般有两个对象,一个对象分配个指针,如果只是求和比较,直接就可以在一个对象上完成,一般就是双头指针跑。第一个暴力解法:1,找出s的所有情况,依次在字典里进行比较。找出最长的,并出现次序在其前的。一段字符的所有情况算法(只删除一个或多个字符,不能将字符交换顺序)List<String> l=new ListArrary<>();str="";gen...原创 2021-01-13 15:23:58 · 201 阅读 · 2 评论 -
68.x的平方根(力扣leetcode) 博主可答疑该问题
思路:1.其中输出值是在一定范围内,可以使用遍历查找,一个一个找。既然是二分查找,所以肯定有左右边界,必须一开始初始化左右边界,防止相减溢出如有疑问可加QQ群讨论:725936761博主免费答疑欢迎大家一起讨论进步。...原创 2021-01-14 12:28:34 · 225 阅读 · 0 评论 -
744..寻找比目标字母大的最小字母(力扣leetcode) 博主可答疑该问题
思路:1.设置一个最小的字符,存储这个满足要求的,通过二分找寻最小的。看端点大于还是小于,如果大于就在左边的,如果小于就在右边。设置最小值搞不出来,因为与最小值比较太麻烦了,能够变量用的越少越好,这样条件判断会越少。直接索引l的方法2.要找出大于target的第一个数,二分的时候p[mid]<=target的时候,l=mid+1,刚好大于target一位。如果中间的数一直小于目标数,那么l就会等于数组长度,说明没有大于目标数,直接返回第一位。注意:目标字符为边界的时候。这边根...原创 2021-01-14 12:31:14 · 188 阅读 · 0 评论 -
540.有序数组中的单一元素(力扣leetcode) 博主可答疑该问题
这种含有出现关键字,而且还有有序的时候,一般不会用哈希表,一般是无序统计出现次数才会用哈希表。直接用HashMap取搞就没有意思了,那么有序就根本没有用用到了。中间的数要么和左边相等,要么和右边相等。看左右边元素没有什么用,因为你进行了第一次比较后不知道往那边走了,看元素是否等于中间元素,里面的if条件无法写,因为根本单个元素到底在那边数组我们是不知道。因为用二分法一定要知道找到中间元素元素后,通过if判断我们要知道我们到底下一步走那一边,不知道的话,还不如直接遍历。二分法只要是通过判断中...原创 2021-01-14 12:37:34 · 223 阅读 · 0 评论 -
278.第一个错误版本(力扣leetcode) 博主可答疑该问题
好菜。我的思路:看中间值是否为false,是的话,找右边,如果右边第一个是true直接返回;不是false就看左边,一直循环,跳出循环后都会还没有找到true,说明全是好的。官方:根本不用比较后一个是不是true,可以最后趋近交接处,感觉直接判定一下可以直接跳出循环,应该速度更快,但是时间更多,可能是多一个if,true在false可能一次找出的几率比较小。如有疑问可加QQ群讨论:725936761博主免费答疑欢迎大家一起讨论进步。...原创 2021-01-14 12:40:13 · 145 阅读 · 0 评论 -
153.寻找旋转排序数组中的最小值(力扣leetcode) 博主可答疑该问题
思路:1.看见排序好了的,又要去找数字,一般都是二分,因为二分需要排序这样下标和值才有关系,否则只有线性遍历和用集合。一般很少直接返回下标。都是返回值注意点:1.置换l,r的时候,需仔细考虑到底把需要中间元素是否包含进待处理数组里。此题中,找出最小元素,万一中间元素就是最小值,所以这个必须包含进去。2.while(l<r) 等于看情况,还有就是写了等于,循环里又有等于,最后返回下标很有可能会错...原创 2021-01-14 12:42:40 · 158 阅读 · 0 评论 -
34.在排序数组中查找元素的第一个和最后一个位置(力扣leetcode) 博主可答疑该问题
思路:1.又看到升序,找位置,一下联想到二分法,算法时间还是O(logn)。2.分别用二分查出最小位置和最大位置的目标值,需要两个二分查找。既然说了找出最大最小值,肯定需要两次查找。一个垃圾的算法,思路是靠凑的,是永远不可能调试成功的。!!!寻找目标数的最小值,是不会越界的因为最后剩两个的时候循环里还有一次l+1,然后l就自动指向了目标值。一般都是r=mid.保持目标值的最小值指向r,返回最小值的位置肯定是返回l,左边的下标。一直在用mid缩进范围。又找最大值...原创 2021-01-14 12:46:30 · 216 阅读 · 0 评论 -
215.数组中第的K个最大元素(力扣leetcode) 博主可答疑该问题
一、笔记部分:方法:排序取下标快排要点:1.i,j,指左,指右,一起往中间走,直到相等,其中可能会交换几次,碰见就要与key交换,所以移动的时候也要加i<j,走不动一次就要交换一次,所以后面有一个if(i<j),因为i==j后就跳出循环与左值交换2.j一定要先走,因为这样采用先指向小于Key的值,如果i先走先指向大于Key的值,然后j走过来后相等,交换,结果把大值交换到最左边了。寻找第k个一般只用提取一半,看这个值与i,j重合哪个值哪个大哪个小。..原创 2021-01-15 12:20:27 · 274 阅读 · 0 评论 -
241.为运算表达式设计优先级(力扣leetcode) 博主可答疑该问题
一、笔记部分思路:1.加括号的地方就是遇见符号运算的地方。所以在符号处进行分治递归,算出每个子部分的所有可能值,然后将所有可能组合起来。步骤与注意事项:1.用String.contain()方法找出字符串是否含有+-*的,含有就去找出这个位置进行分割,如果不含有就是要进行计算的数字。2.想要每种条件都考虑到,肯定在某处都要使用调用递归函数。比如在for循环里使用,确定左右区间数组的时候,如下3.用list保存之后的计算各种结果,思想太精妙了,算好一个就存在里...原创 2021-01-15 14:31:18 · 243 阅读 · 0 评论 -
95.不同的二叉搜索数II(力扣leetcode) 博主可答疑该问题
一、笔记部分思路:1.看见生成所有的1...n的二叉搜索树,所有的:这个字眼想要全部输出肯定有递归爸爸。2.树的递归,本质是左右子树一起嗨,递归一出终止条件必现 有序的所以左不可以大于有,如果相等说明就是可以输出一个节点了,(2,2),左子树,右子树,都为null,所以就是最终节点。3.二叉搜索树要知道是什么:根节点的值大于左子树的所有值,小于右子树所有节点的值。左右子树进而也是二叉搜数,所以相当于一直将左右子树的大小压缩,然后在返回。4.像这样要返回不同的情况,一般都要另外..原创 2021-01-15 14:34:43 · 176 阅读 · 0 评论 -
451.根据字符出现频率排序(力扣leetcode) 博主可答疑该问题
一、笔记部分步骤:1.看见出现频率一下子就想Hashmap,记录出entry类,然后再扔到List集合处理,()[]非常灵性的操作。、2.看见全部都要打印,就没有必要搞快排,快排能节约时间是因为前k个只用看单边,如果是全部打印就不能选择快排了。3.然后选取与字符串相等字符数组储存队列推出的首元素。题解问题:其中遇到了几点问题:1.Map 相关指令用得还不是很熟悉,尤其是entry,还是生成哈希键值对那个长式子的getOrDefeault.2.后面写着变量重复了,排查了..原创 2021-01-15 14:50:21 · 208 阅读 · 0 评论 -
75.国旗问题:颜色分类(力扣leetcode) 博主可答疑该问题
一、笔记部分思路:1.一看到按照顺序排序,还有用数字表示每种颜色的代号,这样更利于排序。2.先搞一个快排热热手。直接强力排序死的太惨了,真实吊车尾。方法二:单指针因为里面说了颜色的代号,所以我们是很明确数组里面有哪些元素,可以根据元素的性质进行排序,从头遍历数组,遇到0就交换到前面,index记下,然后再开始找1,遇到从index+1开始交换,最后只剩下2。然后就成了方法三:双指针(双指针移动必有结束条件,一定要注意,一不注意就会错)①可以不用...原创 2021-01-15 14:55:34 · 323 阅读 · 0 评论 -
1091.二进制矩阵中的最短路径(力扣leetcode) 博主可答疑该问题
一、笔记部分1.一层一层的搜索,把每层可以走的点记录下来,保存到队列W2.到了下一层,移出队列,然后判断这个点周围是否可走,可走就继续记录;另外点也开始测试,如果发现没有走的了就丢掉,不推入队列。易错点:1.创建临时数组,不能有变量名。2、数组不用()而是用[]。1.判断还有符合点(路径点)2.判断是否已经有一条路径走到3.将需要计算的点提取出来4.进行此点计算(任意走一条可以走的通的路),是一个for循环,所以有几条...原创 2021-01-16 15:36:43 · 280 阅读 · 0 评论 -
279.完全平方数(力扣leetcode) 博主可答疑该问题
一、笔记部分思路:1.先列出小于n的所有平方数,用一个容器装入,之后遍历找出。2.再用n的遍历去从1的容器中找,直到余数等于容器里的值queue=next_queue直接全部覆盖,直接让queue成为next_queue1.2、用set集合的因为,在同一级别可能减出来的值会出现一样的。因为quece是多个,square也是多个,所以很有可能减出来的值相同。所以用set存下一个要遍历的值。3、将quece里的所有值进行寻找,找出有没有直接相等的。有的话就返回,没有就..原创 2021-01-16 15:39:36 · 169 阅读 · 0 评论 -
695.岛屿的最大面积(力扣leetcode) 博主可答疑该问题
一、笔记部分DFS思想:1.往四个方向一直走,走到走不通为止,记录下走过的总数。此题是找面积,所以应该从不同的点开始找寻,才能保证是最小的。从不同的点找出不能走的最长距离。1.看cur_i,cur_j越界;2.看超过终点范围没;3.看是否为土地。1.所有条路的可能2.取其中最大的,总与前一条比较3.是==等于,如果只写一个,||会报错4.题目中是找1,5.找到1后,置零,防止另外点重新重复遍历。否则会将栈区溢出,因为每个点都要走以前遍历过的路。6.a.原创 2021-01-16 15:44:02 · 201 阅读 · 0 评论 -
417.太平洋大西洋水流问题(力扣leetcode) 博主可答疑该问题
一、笔记部分思路:1.要找出两条路,从一个点可以达到两边,既然能够达到两边,那我们从两边走,用一个到达矩阵记录那些点可以达到州。每个州一个矩阵,然后最后在将两个州的结果合并。注意点:1.获取了一个长度后,一定要判断是否为零,再进行下一步2.二维数组获取第二维长度的时候,是用[]索引3.进函数都是传的是首地址4.高级程序员都是会省略true的5.检查了好久,,,,唉粗心啊。6.要将这个数组赋给类中的数组,这样类...原创 2021-01-16 15:46:04 · 151 阅读 · 2 评论 -
17.电话号码的字母组合(力扣leetcode) 博主可答疑该问题
一、笔记部分注意点:1.主函数里回溯语句只需要用一个就可以了,因为它的循环是在回溯函数里的,因为是找到所有可能,不会停,所以就跟DFS不一样,DFS是在外部循环找合适的路径,算是单支找路径。2.如果if是结束条件,要么if里面加一个return,要么就用if ....else来进行操作。3.i指的是数字键,而不是数字下的字符,所以要进行数字键下的字符回溯组合,删除字符(为了将新的结果换入),而不是删除数字。4.String和String...原创 2021-01-16 15:48:18 · 151 阅读 · 0 评论 -
93.复原IP地址(力扣leetcode) 博主可答疑该问题
一、笔记部分方法1:暴力一个一个找1.首先要找到分割点,3个分割处搞成4段,对于给出不同的情况,可能选取的每一段的长度不一样,所以要通过最大可能的下标去循环,然后在循环里面进行if判断,将满足条件的提取出来;后面的getLen就是看除数,如果是非零第一个是0的话,08/10=0,然后加1发现和08的长度不相等,所以这一段只能是0,不能往下走去寻找后面一段的数字,所以这种可能就会在这个for循环直接走完,不会进行到最后的add环节了。2.提取每段的条件是数字不能超过255(超过255的那段,那原创 2021-01-16 15:50:17 · 168 阅读 · 0 评论 -
51.N皇后 (力扣leetcode) 博主可答疑该问题
一、笔试部分思路:1.既然皇后要确定二维的位置,而且前面也有规定不可以同行同列,这是一个很重要的突破点,那么我们就可以先入为主安排不同列的皇后,去匹配到不同列。2.既然确定好了不同行不同列,那么有一个条件就是相邻列的皇后肯定不是在相邻行,跟这个这个条件可以排列了,一看到排列回溯大法很香。3.将一个数组的所有排列组合有专门固定的循环方式。注意点:1.一个一个压入不能将一行成为一个整体,只有用StringBuff的toString方法可以首先一行用a...原创 2021-01-16 15:52:09 · 140 阅读 · 0 评论 -
70.爬楼梯 (力扣leetcode) 博主可答疑该问题
一、笔记部分思路:1.想要达到n,有两种可能:①只需要走一步,所以前n-1的可能性为f(n-1)②只需要走两步,所以前n-2的可能性为f(n-2)这两种可能相加就是达到n步的可能,不需要+2因为,走1步或者两步都固定情况,不算在可能性中从后往前推着赋值。二、动态规划类型的高频面试题汇总:https://blog.csdn.net/qq_40262372/article/details/112748995三、各种类型的高频面试题汇总:https://..原创 2021-01-17 16:18:24 · 171 阅读 · 0 评论 -
213.打家劫舍II(力扣leetcode) 博主可答疑该问题
一、笔记部分区别:与打家劫舍1的区别是在于这边的第一位和最后一位不能同时选,所以自然会被限制住范围然后我们才可以进一步分析,分析后莫过于3种范围。在这三个范围进行选择这是首尾不能选择的三种情况。只需要考虑二和三,因为包含了情况1这样先把i-1给i-2,这样就不会产生临时变量,因为后面i-1要被赋值二、动态规划类型的高频面试题汇总:https://blog.csdn.net/qq_40262372/article/details/112748995...原创 2021-01-17 16:21:59 · 188 阅读 · 0 评论 -
62.不同的路径(力扣leetcode) 博主可答疑该问题
一、笔记部分思路:1.这样的总路径因为当前的路径都是从前面的路径走来的,所以很自然就会想到dp(i,j)=dp[i-1][j]+dp[i][j-1];2.但是具有特殊情况,比如在最左边界和最上边界了,只能是1,因为只有一种方法走到这种边界,这也是附加值,没他都没有增加数。二、动态规划类型的高频面试题汇总:https://blog.csdn.net/qq_40262372/article/details/112748995三、各种类型的高频面试题汇总:https..原创 2021-01-17 16:23:36 · 137 阅读 · 0 评论 -
413.等差数列划分(力扣leetcode) 博主可答疑该问题
一、笔记部分思路:1、暴力求解(每对元素的之差是否相等,相等就记录下来,记住区间,然后继续下一对检验)2.动态规划: 其中递归数列的个数与一个大整体是一个递归数列是有关系的 1 2 3 4 6 那么 1 2 3 4是的,其中有 123 234 1234都是递归dp(i)=1+dp(i-1) 每到一个数,那么就会多出一个结果,因为每多出一个数,就会与前面的等差数列组成一个等差数列,所以前面有几个等差数列就会组成几个相等长度的,然后在加上一个最长长度的那个,...原创 2021-01-17 16:25:15 · 178 阅读 · 1 评论 -
343.整数拆分(力扣leetcode) 博主可答疑该问题
一、笔记部分思路:要清楚什么时候就没了,因为总有一个实实在在的数,比如0,1不可拆分了,这就是实在数了。 一个i数被拆分出第一个正整数j(1<j<i),分割成两种情况: ①将i拆分成j和i-j的和,且i-j不再拆分成多个正整数,此时的乘积是jX(i-j);②将i拆分成j和i-j的和,且i-j继续拆分成多个正整数,此时的成绩是jXdp[i-j];所以需要开一个数组,存分割出的元素后相乘的最大值。1、 i与j的关系,数字0,1进行处理没有意义,因为都是0..原创 2021-01-17 16:26:54 · 171 阅读 · 0 评论 -
91.解码方法(力扣leetcode) 博主可答疑该问题
一、笔记部分思路:1.要找出所有的解码可能,就是找出一段数字所有的组合。暴力可以用两个循环,解决 。排列组合的规律2.首先理解出题意 给出的字符串只有1-26有代表的含义,那么0与27之后是没有含义的,但是双数可以拆分为两个单数,但是30这种含0的是不能拆开的,因为拆开后0就没办法了,还有一个就是第一位不是是零因为是0的话,既不能拆,也不能表示出结果。3.组合都是从前往后组合,那考虑后面的组合的数量,就相当于将前面的数量进行考虑,因为后面的组合有几个方式,是那种就按着那个递归...原创 2021-01-17 16:28:48 · 326 阅读 · 0 评论 -
204.计数质数 (力扣leetcode) 博主可答疑该问题
一、笔记部分既然要算素数的数量,那么肯定需要知道素数相关的知识1、素数的定义是: 一个大于1的自然数,且除了1和它本身外,不能被其他自然数整除的数叫素数每个数都可以分解成素数的乘积思路1:暴力搞两层跑,看每个数那些无法被根号n的数整除用i*i<n比i<根号n更快因为乘法比开根号更快思路2:埃式筛法:单纯的找质数是一个一个数跑循环,但是如果反向找合数呢?合数就是质数的倍数,只要给合数记标记即可。而且还有一个关键点是x的合数可以省去x*x之前的数...原创 2021-01-18 15:58:15 · 196 阅读 · 0 评论 -
504.七进制数(力扣leetcode) 博主可答疑该问题
一、笔记部分思路:1.从后往前计算,计算出一个就减去计算出的值,进行下一位计算。1.特殊情况判断2.最后结果的预备字符串,因为需要一个一个传数字3.取符号,为循环做准备4.直接变正5.精髓之处,去余+除法6.压入的顺序和结果是相反顺序所以需要reverse二、数学计算类型的高频面试题汇总:https://blog.csdn.net/qq_40262372/article/details/112784753三、各种类型的高频面试题汇...原创 2021-01-18 16:03:14 · 133 阅读 · 0 评论 -
405.十六进制数 (力扣leetcode) 博主可答疑该问题
一、笔记部分其中需要用到补码表示负数。那么补码怎么表示负数? 将负数取正后,将0变为1,1变为0,然后在加1.思路:1.首先还是要判断是否为负数,因为负数和整数的计算方式是不一样的。2.正数就直接对16取余,一路往前计算赋值;负数的话,按着补码的方式走1.题目中说的是输入的负数用补码表示的,&比%更快2.除法直接用移位,负数直接用补码不用考虑符号位,所以直接无符号移位。二、数学计算类型的高频面试题汇总:https://bl...原创 2021-01-18 16:05:45 · 163 阅读 · 0 评论 -
172.阶乘后的零 (力扣leetcode) 博主可答疑该问题
一、笔记部分思路:想清楚0是如何得来的,都是相乘,那么只有2*5可以得到尾部一个0,从阶乘看,2的数量肯定比0多,所以我们只需要看5的数量有几个5就会有几个0。1.是看5有几个2.比如25,是有两个5,先是25/5算进了一个25里的5,然后单个5也算一个。二、数学计算类型的高频面试题汇总:https://blog.csdn.net/qq_40262372/article/details/112784753三、各种类型的高频面试题汇总:http...原创 2021-01-18 16:08:38 · 105 阅读 · 0 评论 -
67.二进制求和 (力扣leetcode) 博主可答疑该问题
一、笔记部分思路:1.逢2进12.因此需要另外的一个变量来记录是否进位1.记录两个字符串的相应位是否都是1,2.看两个字符串的相应位置是否相等,不一定要同时比较,也可以通过计数来确定3.精髓之处,可以很好的解决两个字符串的1的个数,就看余数。4.精髓之处,然后将记录的标志位通过/2巧妙的将进位留下。5.日常反转, while的记录下标的判断也很灵魂,因为两个都索引完了,还进位了,继续又走一位,再次Push.二、数学计算类型的高频面试题汇总:htt...原创 2021-01-18 16:12:04 · 126 阅读 · 0 评论 -
462.最少移动次数使数组元素相等II (力扣leetcode) 博主可答疑该问题
一、笔记部分思路:1.最小移动步数,就是找出某个数x,使得数组的每个数相距x的距离最小(差的绝对值的和)。 2.这个数就是中位数!记住1.随机选择枢纽轴增加优化时间2.穿入的是len-1,所以要取到这个数3.交换的Index,枢纽轴的元素4.传出枢纽轴元素排好序的下标5.正常排序的终止条件(left>=right,返回,返回值是void,光对数组排序)6.选择快排的终止条件(因为忘掉,调试了好久才行。)二、数学计算类型...原创 2021-01-18 16:14:51 · 364 阅读 · 0 评论 -
367.有效的完全平方数 (力扣leetcode) 博主可答疑该问题
一、笔记部分此题跟开平方根比较像,开平方根是二分查找,i*i与n作为左右界限的加减。直到l,r重合。1.用二分找数,如果找到相等的就返回。2.发现平方数的差值是一系列的等差数列。这种等差遍历速度太慢了。二、数学计算类型的高频面试题汇总:https://blog.csdn.net/qq_40262372/article/details/112784753三、各种类型的高频面试题汇总:https://blog.csdn.net/qq_4026237...原创 2021-01-18 16:16:53 · 181 阅读 · 0 评论 -
238.除自身以外数组的乘积 (力扣leetcode) 博主可答疑该问题
一、笔记部分被这个时间O(N)时间度迷惑到了,以为只能用一个For循环,但是只要是数的清的For循环都算O(N)思路一:1、当选定一个数的时候,是左右两端相乘,那么比较容易想到两个数组分别存两边的乘积。思路二:1.因为输出数组是不算空间复杂度,那么直接拿输出数组操作,先记录左边的乘积,然后从右往左将右边的以此城上,那么就不用开辟两个数组了1.记录左边相乘的结果,2.将右边相乘的结果乘一起。3.这一步非常关键,如果没有他,只是i左边的乘积乘以i右边第一个数的乘...原创 2021-01-18 16:20:18 · 144 阅读 · 1 评论