随笔分类 -  算法

摘要:一、插入排序 就是从左到右遍历,然后看看这个数是否比前面的数小,如果比前面的小就插入到这个数的前面。 public static void insertionSort(int[] arr) { if (arr != null && arr.length >= 2) { for(int i = 1; 阅读全文
posted @ 2023-04-01 23:30 拿着放大镜看世界 阅读(52) 评论(0) 推荐(0)
摘要:加减乘除有一种位运算可以计算的,但是我这里只写非位运算的,但它也不涉及到什么算法,只是单纯的coding能力的考察。 不过我感觉会有点复杂,为了记住,我想画几张图。 给定一个字符串为计算式的表达,请返回计算后的结果 ps:给定的字符串绝对正确,不用担心溢出的问题 首先分为有小括号的情况和没有小括号的 阅读全文
posted @ 2020-10-05 14:38 拿着放大镜看世界 阅读(133) 评论(0) 推荐(0)
摘要:单调栈是一个比较常用也很好用的一个结构,它的作用是找到某个数的左右边比它大/小的最近的数. 压入栈时,如果即将压入的数值会破坏规则,栈里的数依次弹出,直到栈为空或者不会破坏规则。 弹出数时就能得到结果-->右边最近比它大==因为谁而被弹出 左边最近比它大==栈里它的下面值 面试题: 1.一个数组表示 阅读全文
posted @ 2020-10-05 01:03 拿着放大镜看世界 阅读(144) 评论(0) 推荐(0)
摘要:1.找到最大值减去最小值小于等于一个数值的子数组数量 如果L~R范围上达标,那么里面的任何一个子数组都达标 如果L~R范围上不达标,当R向右扩时,必定不达标。 所有我们只需要遍历一次,每次找到以L开头的子数组达标的子数组数量。 使用滑动窗口,这里用到两个滑动窗口。特别简单,就是保持队列里面的大小顺序 阅读全文
posted @ 2020-10-04 19:22 拿着放大镜看世界 阅读(396) 评论(0) 推荐(0)
摘要:贪心算法,在我看来就是题做多了,就能够找到了一种最优秀的做法。但其实也没什么,这里举例几个问题。 1.拼接字符串形成最小字典序 这是一道贪心的问题,而它主要是点就在于不同字符串的排序规则,它排序的规则是string1.string2跟string2.string1,两者拼接之后的大小来排序. 所以这 阅读全文
posted @ 2020-10-04 14:33 拿着放大镜看世界 阅读(128) 评论(0) 推荐(0)
摘要:堆排序的时候其实只是把数组想象成完全二叉树,然后进行的调整。 首先提出几个概念和定义。 假设到达某下标,记为i,那么i的左孩子为2* i - 1 ,i的右孩子为2 * i + 2 ,父节点为(i-1)/2。 heapInsert为往上调整(也就是加入的数值,在最低端看看它能不能往上跳),heapfy 阅读全文
posted @ 2020-10-03 14:00 拿着放大镜看世界 阅读(110) 评论(0) 推荐(0)
摘要:1.遍历二叉树 说到二叉树,最开始就要提到二叉树的遍历了。遍历分为递归版和非递归版,这里先说一下递归版。 但其实递归版也没什么好说的,就是把我们打印节点或者收集节点的时间放在了不同地方就能实现了。 这里说到非递归版,这里我想说的是,当用到先序遍历或者中序遍历后序遍历,都是用到栈辅助,这样子我们就能到 阅读全文
posted @ 2020-09-29 00:31 拿着放大镜看世界 阅读(439) 评论(0) 推荐(0)
摘要:因为今天我重新看了递归的教学视频,但发现好像很多都很容易忘,所以我想把所有常见的递归算法题给整理一下。 1.全排列 输入:"aac" 输出:[aac,aac , aca, aca,caa] 思路就是可以选择每个下标的字母作为开头。 public static List<String> getAll( 阅读全文
posted @ 2020-09-27 00:20 拿着放大镜看世界 阅读(496) 评论(0) 推荐(0)
摘要:最近小编在做算法题的时候,经常做到一些子序列的问题。而我一遇到这种类型的题,我都会习惯性地想到递归,就每次都想着用递归去解决它。但是每次去抠边界问题,就很难受,随着我做这种题的次数增加,我渐渐地找到一些规律。 这些题大概都有三种方式去解题,递归回溯,迭代法,位运算。 在这里我举例一道题,比如leet 阅读全文
posted @ 2020-09-23 23:10 拿着放大镜看世界 阅读(281) 评论(0) 推荐(0)
摘要:首先,我们上一篇说到了递归的二叉树套路,但是递归还有一种更常见的类型,就是题目我们要找到所有有可能的集合,这种类型我称之为"数组添加"。当然我现在这么说,可能你们看得也很懵,但是我举几个例子你们就懂了。我从leetcode里面找来了几道题目: ①给定一个数组 candidates 和一个目标数 ta 阅读全文
posted @ 2020-08-28 23:19 拿着放大镜看世界 阅读(363) 评论(0) 推荐(0)
摘要:从大一接触递归开始就觉得递归很难,然后就一直避开递归这个大头,最近重拾递归,对递归有一些更深入的理解了。此篇仅供参考,如有说错的地方,可以在评论区和我一起探讨(这个方法是我学牛客网的左程云老师的,很推荐大家去报名他的课,不是广告,大家根据自己的经济实力去决定)。 首先我们从最简单的递归开始--阶乘 阅读全文
posted @ 2020-08-23 11:30 拿着放大镜看世界 阅读(706) 评论(0) 推荐(0)