摘要:
注解 工作原理 package com.breeze.rewrite_mybatis; import java.lang.annotation.*; @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD}) public @i 阅读全文
摘要:
5.红包算法 题目 一个关于钱的需求。 发红包功能,例如一个人的群里发了100红包,群里有10个人一起来抢红包,每个人的金额随机分配。 抢红包规则 所有人抢到的金额之和要等于红包金额。 抢到红包的人至少抢到1分钱。 尽可能保证红包拆分的金额分布均衡,不要出现两极分化太严重的情况。 思路 二倍均值法 阅读全文
摘要:
14.A星寻路算法 题目 迷宫寻路需求,在一个迷宫游戏中,有一些怪物攻击主角,现在希望小怪物,能自动绕过迷宫中的障碍物,寻找到主角的所在。 思路 A星寻路算法(A*search algorithm),是一种用于寻找有效路径的算法。 简单的场景举例(简化问题),看一看A星寻路算法的工作过程。 小怪物从 阅读全文
摘要:
13.LRU算法的应用 题目 关于用户信息的需求 假定在一个复杂的系统中,需要抽象出一个用户系统,提供给其他子系统使用,该如何实现。子系统对用户信息的查询频率很高,要注意性能问题。 用户信息是存储在数据库里的,但是对于查询频率高的数据,不能每一次请求时都去查询数据库。 思路 哈希表 使用以用户id为 阅读全文
摘要:
题目 关于用户标签的需求:用户标签包括用户的社会属性、生活习惯、消费行为等信息。例如,程序员,有驾照,单身等等。通过用户标签,可以对多样的用户群体进行统计。例如,统计用户的男女比例,统计喜欢旅游的用户数量等。 通常的思路,是使用关系型数据库,比如Occupation表示用户职位,gender表示性别 阅读全文
摘要:
11.寻找缺失的整数 题目 在一个无序数组里有99个不重复的正整数,范围是1100,唯独缺少一个1100的整数。然后找出这个缺失的整数。 思路 1.对无序数组,进行升序排序,先判断首位是否为2或99,如果是则得到缺失值,否则,不连续的两个元素中间即为,缺失值。时间复杂度,为排序算法的时间复杂度,空间 阅读全文
摘要:
10.金矿问题 题目 有5座金矿,每座金矿的黄金储量不同,需要参与挖掘的工人人数也不同。例如有的金矿储量是500kg黄金,需要5个工人来挖掘,有的金矿储量是200kg黄金,需要3个工人来挖掘...... 如果参与挖矿的工人的总数是10。每座金矿要么全挖,要么不挖,不能派出一半人挖取一半的金矿。要求计 阅读全文
摘要:
9.如何实现大正整数相加 题目 给出两个很大的正整数,要求实现程序求出两个正整数之和。超出Java中的Long类型的范围的正整数,如何求和。 思路 使用到小学的数学了,对于大的数,小学老师会教,列竖式进行计算。 对于,计算机,无法计算太大的数,进行加运算。我们可以将大的数,转成一个个小的整数,创建两 阅读全文
摘要:
8.删去k个数字后的最小值 题目 给出一个整数,从该整数中去掉k个数字,要求剩下的数字形成的新整数经可能小。应该如何选取被去掉的数字? 其中整数的长度大于或等于k,给出的整数的大小可以超过long类型的数字范围。 举例:整数1593210,删除3个数字,新整数最小为1210;整数5674201,删除 阅读全文
摘要:
6.用栈模拟队列 题目 用栈来模拟一个队列,要求实现队列的两个基本操作:入队、出队。 思路 用两个栈,一个栈用来存储入队元素,另一个栈用来存储,出队元素。 比如,有两个栈A,B,入队元素,先进入到栈A,每次元素要出队时,就把栈A的元素依次出栈,进入到栈B,再从栈B出栈,来模拟元素出队。 代码 pub 阅读全文