01 2019 档案
摘要:题目描述 一个项目中有Employee类型,该类型是个大类型,下分为Engineer类型和Manager类型。比方一个人开始是Engineer类型,后来升职了,变成了Manager的角色,这种情况,应该如何建模更好一些。 思路 变继承关系为组成关系,方便扩展。 代码 定义一个Role的接口: 定义E
阅读全文
摘要:在软件系统设计的时候,我们需要把一个大的系统按照业务功能进行拆分,做到高内聚、低耦合。 但是呢,拆分之后会产生一些通用性的东西,比如日志,安全,事务,性能统计等,这些非功能性需求,横跨多个模块。最low的一种写法如下: 为什么说上面这种方式low呢,主要是因为它把日志、安全、事务、性能统计这些非业务
阅读全文
摘要:1. 买卖股票的最佳时机 问题描述 LeetCode 121。 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例 1: 示例 2: 思路 动态规划。
阅读全文
摘要:这里权当一个matplotlib的用法小结,主要用于记录,以防忘记。 需要安装一下Anaconda,这里推荐清华大学的镜像:https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ matplotlib能将数据进行可视化,更直观地呈现。使数据更加客观,更
阅读全文
摘要:题目描述 思路 这道题就是在说,由多个1组成的数是beautiful的,现在想求出r进制中的r,使得给出的数字转换成r进制,得到beautiful的数字,如果有多种方式转换,那么取1的个数最多的那种情况,也就是r最小的情况。 这道题其实就是10进制和r进制的转化,这里就不详述了,但是注意题目中的一点
阅读全文
摘要:在刷谷歌面试题的过程中,发现一道有意思的题目,以前没有特别注意,忽略了一些东西,特此记录。 题目要求输出以下代码的结果: 结果分析: new Integer(2) == 2,输出为true,因为Java自己拆箱了,即执行了new Integer(2).intValue()。 new Integer(
阅读全文
摘要:在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。 乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。 无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种
阅读全文
摘要:1. 最小的K个数 题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。 思路 Java 中的PriorityQueue是一个基于优先级堆的无界优先级队列。优先级队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的
阅读全文
摘要:题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 思路 这道题最简单的思路就是排序,然后统计每个数字出现的次数,这样时间复杂度是
阅读全文
摘要:赶在新年之前,我面试了字节跳动广告部门的品牌广告后端研发工程师,并收获了实习offer,我想把实习面试的题目分享出来,供大家参考。 字节跳动还是依旧非常注重算法能力,所以面试过程算法比重依旧比较大,不知道是不是年前比较缺人的原因,这次面试一共经历了两面,而且难度比我去年面试抖音略简单一下,下面是面试
阅读全文
摘要:题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 思路 因为是二叉搜索树,所以中序遍历就是有序的,这里采用非递归中序遍历,并通过前驱指针pre,进行转换。 代码
阅读全文
摘要:题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 思路 遍历链表即可,注意null的判断。 代码
阅读全文
摘要:题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 思路 若根节点相等,利用递归比较他们的子树是否相等,若根节点不相等,则利用递归分别在左右子树中查找。 代码
阅读全文
摘要:无题 端杯酒湿襟, 午醉诗自吟。 屈诗情入梦, 原一梦归人。 追风笑往昔, 求同吟今人。 卓而登高室, 越万掌乾坤。 背景:在美团实习的时候,要求用“端午,屈原,追求,卓越”几个关键词写一段话,遂做之。 无题2 石径崎岖披彩霞, 泽香伴我到天涯。 涛来皆是真情在, 真有几人入梦花? 美情意浓心潮涌,
阅读全文
摘要:1. 求1+2+3+...+n 题目描述 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 思路 短路求值,&&逻辑与,逻辑与有个短路特点,前面为假,后面不计算。不让用这些循环判断,只能用递归。 代码 2.
阅读全文
摘要:题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任
阅读全文
摘要:题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快
阅读全文
摘要:题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 对应每个测试案例,输出两个数,小的先输出。 思路 定义两个指针,分别从前面和后面进行遍历。间隔越远乘积越小,间隔越近乘积越大,所以最先出现的两个数乘积最小。 代
阅读全文
摘要:题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 思路 层次遍历,在此基础上加上奇数偶数行判断。 代码
阅读全文
摘要:题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 思路 定义快慢两个指针,相遇后(环中相汇点)将快指针指向pHead 然后一起走,每次往后挪一位,相遇的节点即为所求。详细分析:相遇即p1==p2时,p2所经过节点数为2x,p1所经过节点数为x,设环中有n个节点,p
阅读全文
摘要:题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。 思路 新建一个头节点,向后进行重复查找判断。 代码
阅读全文
摘要:题目描述 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+
阅读全文
摘要:我录制的“数据结构和算法面试实战”教程上线啦! 本视频采用时下最流行的Java语言讲解,如果你是小白,这门课带你系统学习数据结构和算法常见内容,提高学习效率;如果具备一定基础,带你弥补知识盲点,使知识体系更加系统化。每个部分都有实际案例和面试真题,由浅入深,并有代码讲解。帮你打好基础,为你从业道路扫
阅读全文
摘要:Python其实很简单,入门+提高看一些简单的教程就能学会,这里列出一些比较好的资料: 廖雪峰博客 https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 传智播客教程 http://cc
阅读全文