面试算法题
Longtermevolution
人生不要太匆匆,不急,慢慢来吧
展开
-
每日算法导航
题目导航,方便回顾。1、跳跃游戏贪心2、二叉树层序遍历 层容器、递归3、二叉树的最大路径和 二叉树节点node,其参与一条路径的可能方式;最大权路径4、股票 亏赚在哪天5、N天后的房间状态...原创 2020-04-22 14:10:02 · 348 阅读 · 0 评论 -
剑指offer-Java版本汇总
汇总一下完成的剑指offer解题,每道题都尽量按照一定格式书写记录,方便查阅回顾。题目 关键词 25、合并两个排序的链表 链表,递归,指针 26、树的子结构 树,树的遍历,递归,指针 27、二叉树镜像 抽象问题,前序遍历,递归 28、对称的二叉树 前序遍历,...原创 2020-03-19 17:14:56 · 449 阅读 · 0 评论 -
完全二叉树计算叶节点数目
https://www.cnblogs.com/tiffer/p/4438993.html原创 2020-09-08 17:42:48 · 323 阅读 · 0 评论 -
每日算法 - 列出24点游戏的所有解法
目录题目代码相关题目题目输入四张扑克牌,输出所有可能的形成24点的表达式。代码import java.util.HashMap;import java.util.Map;import java.util.Random;import java.util.Scanner;public class T2 { //定义随机产生的四个数 static int number[] = new int[4]; //转换后的num1,num2,num3,num4原创 2020-09-08 17:42:04 · 1317 阅读 · 0 评论 -
每日算法 - 多线程 交替输出1A2B3C4D...26Z
题目代码package com.thread;/** * 字符交替出现 */public class CharAlternately { public static void main(String[] args) { final Object o = new Object(); String[] aInt = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"}; ch...原创 2020-08-12 17:03:32 · 433 阅读 · 0 评论 -
每日算法 - 组合(数学公式 -------- c(n,k))
目录题目思路代码总结题目给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。示例:输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/combinations著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路...原创 2020-07-08 17:32:52 · 3460 阅读 · 0 评论 -
每日算法 - 解码方法
目录题目解题思路代码题目一条包含字母A-Z 的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: "12"输出: 2解释:它可以解码为 "AB"(1 2)或者 "L"(12)。示例2:输入: "226"输出: 3解释:它可以解码为 "BZ" (2 26), "VF" (22 6), 或者 "BBF" (2 2 6) 。...原创 2020-07-03 18:19:41 · 305 阅读 · 0 评论 -
每日算法 - 有序矩阵中第k小的元素
题目给定一个n x n矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素。示例:matrix = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15]],k = 8,返回 13。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/kth-smallest-element-in-a-so...原创 2020-07-02 21:01:50 · 289 阅读 · 0 评论 -
每日算法 - 长度最小的子数组
目录题目思路代码总结题目给定一个含有n个正整数的数组和一个正整数s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组[4,3]是该条件下的长度最小的连续子数组。进阶:如果你已经完成了O(n) 时间复杂度的解法, 请尝试O(n log n) 时间复杂度的解法。来源:力扣(LeetCode)链...原创 2020-06-28 14:14:59 · 155 阅读 · 0 评论 -
每日算法 - 无重复字符的最长子串
目录题目解题思路代码总结完整测试代码题目给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。 请注...原创 2020-06-20 20:26:21 · 137 阅读 · 0 评论 -
每日算法 - 设计循环队列(基础算法)
目录题目解题思路1、数组数组实现代码单链表代码(思路见链接)题目设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。你的实现应该支持如下操作:MyCircularQueue原创 2020-06-19 16:15:38 · 1022 阅读 · 0 评论 -
每日算法 - 二叉树中序遍历(基础算法)
目录题目解题思路中序遍历代码递归(最基础)栈莫瑞斯总结完整测试代码题目给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶:递归算法很简单,你可以通过迭代算法完成吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal著作权归领扣...原创 2020-06-19 10:29:43 · 397 阅读 · 0 评论 -
每日算法 - 二叉树前序遍历(基础算法)
目录题目解题思路代码迭代 + 栈递归实现前序遍历(最基础)莫里斯遍历(了解)总结完整测试代码及结果题目给定一个二叉树,返回它的前序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,2,3]进阶:递归算法很简单,你可以通过迭代算法完成吗?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-pre...原创 2020-06-18 20:29:32 · 284 阅读 · 0 评论 -
每日算法 - 三个数之和
题目给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为: [-1, 0, 1], [-1, -1, 2]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum...原创 2020-06-12 16:45:46 · 339 阅读 · 0 评论 -
每日算法 - 数字翻译成字符串
目录题目描述解题思路代码总结题目描述给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"提示:0 <= num <..原创 2020-06-10 11:25:35 · 227 阅读 · 0 评论 -
每日算法 -
目录题目解题思路代码总结题目1371. 每个元音包含偶数次的最长子字符串给你一个字符串s,请你返回满足以下条件的最长子字符串的长度:每个元音字母,即'a','e','i','o','u' ,在子字符串中都恰好出现了偶数次。示例 1:输入:s = "eleetminicoworoep"输出:13解释:最长子字符串是 "leetminicowor" ,它包含 e,i,o各 2 个,以及 0 个 a,u 。示例 2:输入:s = "leetcodei...原创 2020-05-20 19:50:24 · 170 阅读 · 0 评论 -
每日算法 - 乘积最大子数组
题目给你一个整数数组 nums,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释:子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释:结果不能为 2, 因为 [-2,-1] 不是子数组。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-product-s...原创 2020-05-18 14:53:52 · 154 阅读 · 0 评论 -
每日算法 - 只出现一次的数字
题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/single-number著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。...原创 2020-05-14 15:02:22 · 187 阅读 · 0 评论 -
每日算法 - 最大正方形
目录题目解题思路代码总结题目在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximal-square著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解题思路动态规划1、设置动态更新变量.原创 2020-05-08 20:56:59 · 536 阅读 · 0 评论 -
每日算法 - 字符串转整数
目录题目解题思路代码总结题目请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一...原创 2020-05-07 20:22:58 · 284 阅读 · 0 评论 -
每日算法 - 最低票价
目录题目解题思路代码题目在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为days的数组给出。每一项是一个从1到365的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为costs[0] 美元;一张为期七天的通行证售价为costs[1] 美元;一张为期三十天的通行证售价为costs[2...原创 2020-05-06 17:54:58 · 347 阅读 · 0 评论 -
巨坑!!! --- Scanner先输入整型再输入字符串时,字符串不能输入的问题
太坑了,笔试题本地调试死活都对,上了scanner就崩,真是够了。Scanner先输入整型再输入字符串时,字符串不能输入的问题原创 2020-04-29 18:11:42 · 252 阅读 · 0 评论 -
每日算法 - 括号生成问题
目录题目解题思路暴力法暴力法代码回溯法回溯法代码题目数字 n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ...原创 2020-04-23 11:59:04 · 408 阅读 · 0 评论 -
每日算法 - 股票价格跨度
目录题目解题思路代码题目编写一个 StockSpanner 类,它收集某些股票的每日报价,并返回该股票当日价格的跨度。今天股票价格的跨度被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今天)。例如,如果未来7天股票的价格是 [100, 80, 60, 70, 60, 75, 85],那么股票跨度将是 [1, 1, 1, 2, 1, 4, 6]。...原创 2020-04-22 20:40:04 · 742 阅读 · 0 评论 -
每日算法 - N天后的房间状态
目录题目解题思路代码题目类似来源:leetcode房间状态问题解题思路1、房间状态会循环出现:共8间房,每个房间有两个状态,总共有2^8种状态。所以状态会形成循环;2、模拟状态:模拟每一天的状态state,每次迭代一天的情况。对于每一天,更新剩余的天数(怎么更新在3中有部分考虑); 将当天状态更新,就是state - > nextDay(state)...原创 2020-04-22 14:01:42 · 401 阅读 · 0 评论 -
每日算法 - 股票 亏赚在哪天
目录题目解题思路题目解题思路1、目前只会暴力法import java.util.LinkedList;import java.util.Scanner;public class Stock { public static void main(String[] args) { int[] price = {23,24,25,21,12,22,31,2...原创 2020-04-22 11:56:57 · 169 阅读 · 0 评论 -
每日算法 - 二叉树的最大路径和(树的最大路径和???)
今天周六,早上自然醒,这没什么,只是竟然自然醒的时间比平时闹钟还要早,真是若无闲事挂心头,便是人间好时节,心里没事才是最爽的。晚上要去建设路和同学吃饭,这是自二月份疫情开始以来第一次外出吃饭,老天保佑。所以先把每日算法干了。题目给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。...原创 2020-04-18 12:00:42 · 252 阅读 · 0 评论 -
每日算法 - 二叉树的层序遍历
目录题目解题思路代码鉴于找实习那么打脑壳,今天晚上再写一道题吧。。。题目给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20],...原创 2020-04-17 20:51:14 · 201 阅读 · 0 评论 -
每日算法 - 跳跃游戏
目录题目解题思路代码今天天气多云转晴。今天做了一道跳跃游戏的题,利用的是贪心思想(对于某个变量的动态更新):在遍历的过程中,根据遍历的对象不一样,判断目标值(需要动态更新的变量)是否满足更新的条件,如果满足就更新,不满足就继续遍历。并且判断是否到达了遍历结束的条件。题目给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长...原创 2020-04-17 18:06:52 · 277 阅读 · 0 评论 -
算法题 - 字符串循环节
目录题目描述 解题思路参考解题字符串的拆分 + 拼接拆分 - substring函数拼接题目描述我们规定对一个字符串的shift操作如下:shift(“ABCD”, 0) = “ABCD”shift(“ABCD”, 1) = “BCDA”shift(“ABCD”, 2) = “CDAB”换言之, 我们把最左侧的N个字符剪切下来, 按序附...原创 2020-04-10 17:02:00 · 819 阅读 · 0 评论 -
2020 美团笔试 - 回顾三道算法题
目录题目一解题思路参考解题题目二题目一输入当前周几x,当前时间(24小时制,时、分不够两位数的前面补0),一个分钟数n;输出:当前时间往前推n分钟的时间,即周几 + 24制时间 。输入:302:10200输出:223:40解题思路对于24进制的时间: 天(0~7): 时(0~24):分(0~60)则对应一个分钟数n,有以下规...原创 2020-04-10 10:03:31 · 1021 阅读 · 0 评论 -
java - 广度优先搜索 - 遍历树 - 持续更新
目录广度优先搜索算法(Breadth-First Search,BFS)1、递归实现BFS遍历树2、非递归实现BFS遍历树树的定义参见:https://blog.csdn.net/Longtermevolution/article/details/105395558广度优先搜索算法(Breadth-First Search,BFS)BFS是从根节点开始,沿着树的宽度遍历...原创 2020-04-09 11:40:46 · 262 阅读 · 1 评论 -
java实现-深度优先搜索
定义DFS的思想是从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节点,然后从另一条路开始走到底。DFS适合此类题目:给定初始状态跟目标状态,要求判断从初始状态到目标状态是否有解。...原创 2020-04-09 11:35:16 · 5430 阅读 · 0 评论 -
股神
目录题目描述解题思路参考解题题目描述经过严密的计算,小赛买了一支股票,他知道从他买股票的那天开始,股票会有以下变化:第一天不变,以后涨一天,跌一天,涨两天,跌一天,涨三天,跌一天...依此类推。为方便计算,假设每次涨和跌皆为1,股票初始单价也为1,请计算买股票的第n天每股股票值多少钱?解题思路分析得出应该是一个数学问题,列出表格,方便分析:实际天数 dat...原创 2020-04-08 13:34:02 · 181 阅读 · 1 评论 -
Java Scanner类
目录1、读取字符串next():nextLine():2、读取int 或 float 类型的数据java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。参考文章:https://www.runoob.com/java/java-scanner-class.html基本格式:1、读取字符串可以使用n...原创 2020-04-08 10:39:36 · 105 阅读 · 0 评论 -
hashMap总结
目录hashMap1、haspmap扩容机制2、hashmap为啥会有线程安全问题?3、hashMap、hashTable、ConcurrentHashMap对比?4、JDK1.7 和1.8 关于hashMap尾插hashMap1、haspmap扩容机制1、什么是扩容机制?当数据容量超过当前最大容量*loadfactor(loadfactor表示扩容因子)...原创 2020-03-27 11:47:07 · 244 阅读 · 0 评论 -
4_剑指offer_java_二维数组中的查找
目录题目描述测试用例题目考点解题思路参考解题题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。例如下面的二维数组就是每行、每列都是递增排序,如果在这个数组中查找数字7,则放回true;如果查找数字5,由于数组不含该数字,则返回false。...原创 2020-03-30 11:52:10 · 171 阅读 · 0 评论 -
62_剑指offer_java_圆圈中的最后一个数字
目录题目描述测试用例题目考点解题思路题目描述0,1,...,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈剩下的最后一个数字。约瑟夫环问题测试用例功能测试(输入的m小于n,比如从最初有5个数字的圆圈中每次删除第2、3个数字;输入的m大于或者等于n,比如从最初有6个数字的圆圈中每次删除第6、7个数字) 特殊输入测试...原创 2020-03-19 12:41:21 · 142 阅读 · 0 评论 -
61_剑指offer_java_扑克牌顺子
题目描述从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王可以看成任意数字。测试用例功能测试(抽出的牌中有一个或者多个大、小王;抽出的牌中没有大、小王;抽出牌有对子) 特殊输入测试(输入空指针)题目考点考察应聘者的抽象建模能力。解题思路数组排序 统计数组中0的个数 统计排序之后的数...原创 2020-03-13 12:10:37 · 149 阅读 · 0 评论 -
60_剑指offer_java_n个骰子的点数
题目描述把n个骰子仍在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。测试用例功能测试(1、2、3、4个骰子的各点数的概率) 特殊输入测试(输入0) 性能测试(输入较大的数字,如11)。题目考点考察应聘者的数学建模能力。 考察应聘者对递归和循环的性能的理解。解题思路用两个数组来存储骰子点数的每个总数出现的次数(动态规划数组)n个骰子...原创 2020-03-09 10:49:41 · 183 阅读 · 0 评论