算法和数据结构刷题积累
刷题!!!
爱敲代码的Harrison
种一棵树最好的时间是十年前,其次是现在。
展开
-
头条面试真题——LightProblem
问题一是只有0位置才做决策,后续都是单分支,一条撸到死。问题二是只有0位置和1位置才做决策,后续也都是单分支…原创 2022-09-08 15:54:38 · 262 阅读 · 0 评论 -
LRU内存替换算法
【代码】LRU内存替换算法。原创 2022-09-01 20:54:13 · 412 阅读 · 0 评论 -
字符串转换整数 (atoi)
力扣链接:字符串转换整数 (atoi)原创 2022-06-26 11:41:45 · 269 阅读 · 0 评论 -
无重复字符的最长子串
力扣链接:无重复字符的最长子串子串问题(或子序列问题)规律总结:必须以i位置结尾怎样怎样 或者 必须以i位置开始怎样怎样;把每个位置的答案求出了,最终答案就是所有答案中的最大值子串跟子序列的区别:子串是必须连续的,子序列可以要求不连续这个题就只有两个因素影响如何记录上一个重复字符出现的位置呢?可以用一个map,也可以自己用数组代替map。(建议能不用map的情况下,就不用map。虽然map的增删改查时间复杂度是O(1),数组寻址比map查找,在常数时间上更快一点!下文会举例子测试)自己用数组代替map,数组原创 2022-06-25 13:49:34 · 198 阅读 · 0 评论 -
面试题9——捕获的雨水II
题目如果给你一个二维数组,每一个值表示这一块地形的高度,求整块地形能装下多少水。package com.harrison.class02;import java.util.Comparator;import java.util.PriorityQueue;/** @author:Harrison* @Times:2022年4月21日 下午11:07:12* @motto:众里寻他千百度,蓦然回首,那人却在灯火阑珊处。*/public class Code05_TrappingRai原创 2022-04-21 23:38:44 · 102 阅读 · 1 评论 -
面试题8——捕获的雨水
题目package com.harrison.class02;/** @author:Harrison* @Times:2022年4月20日 下午9:24:21* @motto:众里寻他千百度,蓦然回首,那人却在灯火阑珊处。*/public class Code04_TrappingRainWater { public static int water1(int[] arr) { if(arr==null || arr.length<2) { return 0; }原创 2022-04-21 19:36:09 · 421 阅读 · 0 评论 -
面试题7——超级洗衣机
题目力扣链接超级洗衣机代码package com.harrison.class02;// 力扣链接:https://leetcode-cn.com/problems/super-washing-machines/public class Code02_PackingMachine { public static int minOps(int[] arr) { if(arr==null || arr.length==0) { return 0; } int size=arr原创 2022-04-20 21:26:59 · 154 阅读 · 0 评论 -
面试题6——二叉树的最大路径和
题目扩展:问题4)路径可以从任何结点出发,但必须到叶节点,返回最大路径和重要技巧:二叉树的递归套路——平衡二叉树二叉树的递归套路——二叉树的最大距离二叉树的递归套路——最大二叉搜索子树大小二叉树的递归套路——派对的最大快乐值二叉树的递归套路——满二叉树二叉树的递归套路——搜索二叉树二叉树的递归套路——最大二叉搜索子树头结点二叉树的递归套路——完全二叉树二叉树的递归套路——最低公共祖先package com.harrison.class01;public class Code原创 2022-04-20 18:53:30 · 673 阅读 · 0 评论 -
面试题5——构造特殊的数组
题目package com.harrison.class01;public class Code05_MakeNo { public static int[] makeNo(int size) { if(size==1) { return new int[] {1}; } int halfSize=(size+1)/2; int[] base=makeNo(halfSize); int[] ans=new int[size]; int index=0; for(原创 2022-04-20 18:46:13 · 118 阅读 · 0 评论 -
面试题4——矩阵最大正方形边长
题目package com.harrison.class01;public class Code04_MaxOneBorderSize { public static int getMaxSize(int[][] m) { // 两个辅助数组的意义: // 记录在原矩阵m中每个格子连同自己格子在内,往右和往左最多的1的个数 int[][] right=new int[m.length][m[0].length]; int[][] down=new int[m.length][m[0原创 2022-04-20 14:52:30 · 340 阅读 · 0 评论 -
面试题3——ColorLeftRight
题目有一些排成一行的正方形。每个正方形已经被染成红色或者绿色。现在可以选择任意一个正方形然后用这两种颜色的任意一种进行染色,这个正方形的颜色将会被覆盖。目标是在完成染色之后,每个红色R都比每个绿色G距离最左侧近。返回最少需要涂染几个正方形。如样例所示:s = RGRGR 我们涂染之后变成RRRGG满足要求了,涂染的个数为2,没有比这个更好的涂染方案。package com.harrison.class01;public class Code03_ColorLeftRight { publ原创 2022-04-19 23:09:46 · 100 阅读 · 0 评论 -
面试题2——括号四连
括号有效配对是指:1)任何一个左括号都能找到和其正确配对的右括号2)任何一个右括号都能找到和其正确配对的左括号有效的: (()) ()() (()()) 等无效的: (() )( 等问题一:怎么判断一个括号字符串有效?问题二:如果一个括号字符串无效,返回至少填几个字符能让其整体有效问题三:返回一个括号字符串中,最长的括号有效子串的长度问题四:最深有效括号的层数package com.harrison.class01;public class Code02_ParenthesesFour原创 2022-04-18 23:07:46 · 117 阅读 · 0 评论 -
面试题1——CordCoverMaxPoint
题目给定一个有序数组arr,从左到右依次表示X轴上从左往右点的位置给定一个正整数K,返回如果有一根长度为K的绳子,最多能盖住几个点绳子的边缘点碰到X轴上的点,也算盖住package com.harrison.class01;import java.util.Arrays;public class Code01_CordCoverMaxPoint { public static int maxPoint1(int[] arr, int L) { int res = 1; for (i原创 2022-04-18 20:53:56 · 285 阅读 · 0 评论