![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
菜鸟阿咩
这个作者很懒,什么都没留下…
展开
-
Day6.牛客网剑指offer 67题之55-67(java实现单队列打印之字形二叉树!)
Day6.牛客网剑指offer 67题之55-67(java代码)55.链表中环的入口结点题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。思路用两个指针,一个指针每次走一步,一个每次走两步,如果两个指针相遇了,说明有环,相遇之后让一个指针回到头结点,然后两个指针每次走一步直到相遇就是环的入口结点(可以自己画一下)。public ListNode EntryNodeOfLoop(ListNode pHead) { if(pHead==nul原创 2020-05-16 20:21:15 · 302 阅读 · 0 评论 -
Day5.牛客网剑指offer 67题之43-54题(java代码)
43.左旋转字符串题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!思路左旋转其实可以分三步进行一个字符串的逆序abc→cba 得到cbaXYZdefXYZdef→fedZYX 得到cbafedZYXcbafedZYX→X原创 2020-05-15 13:15:01 · 214 阅读 · 0 评论 -
Day4.牛客网剑指offer 67题之33-42题(java代码)
Day4.牛客网剑指offer 67题之33-题(java代码)今天起个大早准备复试的心理测试题,大概10点多就结束了,不过也挺累了,就直接睡了个回笼觉,然后起来又挨个通知考生下午思想道德面试的会议室位置,还好下午没有安排到工作又稍微轻松一点…周末工作量就很大了,白天都是安排了任务,反正周末是没了,昨天也提交返校申请了,也不知道什么时候能有个准信,在家呆着确实效率没有想象中的高啊。33.丑数题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它原创 2020-05-14 15:33:53 · 241 阅读 · 0 评论 -
力扣打家劫舍1-3 java实现
打家劫舍Ⅰ思路动态规划实现,只需要隔着偷就好。class Solution { public int rob(int[] nums) { int n = nums.length; // 处理边界条件。 if (n == 0) { return 0; } if (n == 1) { return nums[0]; } // 定义dp数组原创 2020-05-29 17:33:43 · 278 阅读 · 1 评论 -
HashMap的几种遍历方式分析
简要介绍HashMap相信大家学过数据结构的对哈希表(Hash table)并不陌生,即使不熟悉你也应该听过哈希冲突等词,哈希表也称散列表,是一种非常重要的数据结构,出现于各种应用场景,许多缓存技术的核心就是内存中维护一张非常大的哈希表。HashMap基于哈希表Map接口实现,提供了所有可选的映射操作,其相对于数组、线性链表、二叉树等数据结构在进行添加、删除查找等操作的性能非常高,时间复杂度为O(1)(不考虑哈希冲突的情况)。HashMap的主要操作是put和get,内部的Entry数组是基本组成单元原创 2020-05-26 22:17:40 · 399 阅读 · 0 评论 -
力扣LRU、LFU缓存机制java实现
LRU缓存思路了解LRU(最近最少使用)缓存机制的原理之后,主要还是当容量达到上限时如何才能删除掉最久未使用的数据,可以考虑使用LinkedHashMap吧,可以维持插入的顺序,如果需要删除掉最久未使用的数据,那么可以使用迭代器迭代删掉第一个数据即可。(这里默认最近最少未被使用的项就是按插入顺序最先插入的项)class LRUCache { private int cap; private Map<Integer, Integer> map = new LinkedHashM原创 2020-05-25 10:31:34 · 520 阅读 · 0 评论 -
力扣跳跃游戏1-5思路更新(java实现)
跳跃游戏Ⅰ这一题比较简单,首先需要明确的是只有当走到了元素为0的下标时才不能达到最后一个位置。所以在循环中直接考虑nums[i]==0的条件i之前的数能不能跳过当前位置。public boolean canJump(int[] nums) { if(nums.length<=1) return true; for(int i=0;i<nums.length-1;i++){ flag://在这里设置一个flag标志是当下面语句成立时即表原创 2020-05-08 18:00:46 · 368 阅读 · 0 评论 -
力扣课程表1-3 java实现
三道课程表题,前两道与拓扑排序相关,第三道题与优先队列的贪心算法有关。课程表Ⅰ思路拓扑排序的话可以考虑用广度优先搜索的方法,判断图是否有环。一门课有先修课程,说明这门课是有入度的,可以从这一点入手。构造邻接表来存储图,利用入度矩阵存储每个节点的入度,将入度为0的节点一次入队,然后遍历,减少其对应端点的入度,最后判断是否全部入队。public boolean canFinish(int numCourses, int[][] prerequisites) { int []degr原创 2020-05-21 23:02:32 · 549 阅读 · 0 评论 -
力扣1371. 每个元音包含偶数次的最长子字符串
1371. 每个元音包含偶数次的最长子字符串思路状态压缩,设置a->0b00001,e->0b00010,i->0b00100,o->0b01000,u->0b10000,五个位共2^5个组合,使用int类型status存储状态,在对status进行亦或计算,当a为偶数个时二进制第1位为0,当e为偶数个时二进制第2位为0,其他元音字符同理,所以当status为0时所有选择的元音字符都是偶数次。利用按位异或运算可以切换0和1。动态规划数组statusPos以状态status原创 2020-05-21 14:09:04 · 160 阅读 · 0 评论 -
二叉树的前序、中序、后序以及层次遍历(递归与非递归实现)
二叉树遍历往往会使用到递归,往往递归的方法是容易实现的,如果是非递归实现一般都是可以用栈或者队列实现。二叉树定义//Definition for a binary tree node. public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }前序中序后序三种遍历的三种思想:前序:根-左-右中序:左-根-右后序:左-右-原创 2020-05-19 14:00:38 · 422 阅读 · 0 评论 -
Java实现力扣每日一题之验证回文字符串Ⅱ
验证回文字符串Ⅱ思路回文字符串的验证仍然考虑使用双指针的方法,在这里的难点就是当匹配到不一样的字符串时如何判定删除某一个字符后回文仍成立,这里就需要设定一个判断函数,例如,验证abbca时,左边指针i向右遍历,右边指针j向左遍历,b不等于c时,可以验证(i+1,j)或者(i,j-1)的字符只要任意一个满足回文条件即可继续判断回文。public boolean validPalindrome(String s) { //思路,从两边开始判断,如果字符不相等,就考虑(i+1,j) (i,原创 2020-05-19 09:51:44 · 172 阅读 · 0 评论 -
Day3.牛客网剑指offer 67题之22-32题(java代码)
牛客网剑指offer 67题(22-32)有时候觉得自己特别容易陷入一些死圈套,纠结半天,感觉自己的数学推理部分还是略菜啊,找不到好的思路突破点,慢慢来吧。22.从上往下打印二叉树题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路二叉树的层次遍历,用广度优先搜索办法,这里并没有按层分开输出,所以实现又稍微简单一些,跟按层输出原理类似。public class Solution { public ArrayList<Integer> PrintFromTopT原创 2020-05-13 12:43:36 · 221 阅读 · 0 评论 -
Day 2.牛客网剑指offer 67题之12-21题(java代码)
牛客网剑指offer 67题(12-21)传送门:牛客网剑指offer 67题(1-11)(二)12-21题,早上院里安排了模拟复试,负责拉考生进考场和录像监考机位,一个组45个人跳过专业课面试的模拟都弄了快3个小时,中午又去接待了同学,下午直接瘫倒在床上,以后到正式线上复试了肯定更久…卑微打工仔,不过之前觉得线上复试还是很容易出问题,现在想想在双机位的存在下还是比较公平的,有人说线上复试可以线上组队交流,这种可能性存在,但线下复试你也没法阻止抱团的感觉,有时候确定得靠考生的自觉,今天做的题也还行,因为原创 2020-05-12 20:02:26 · 179 阅读 · 0 评论 -
一周刷完牛客网剑指offer 67题之1-11题(java代码)持续更新
牛客网剑指offer67题我这里就直接按它给的顺序写了,不再归类了。(一)1-11题,最近事情比较多,要忙小论文的实验还要辅助老师完成研究生线上复试…所以就写这些练练手,这些题中应该第四题重建二叉树稍微步骤和代码量多一点,本科的时候也接触过了给定前序、中序遍历推出二叉树的题,从遍历原理入手理解的会更快。1.二维数组中的查找题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断原创 2020-05-11 19:20:21 · 199 阅读 · 0 评论