
Lintcode题解
尹小珊
每天工作十四个小时的见习程序媛~
展开
-
Lintcode—落单的数
落单的数(Java)题目给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字。输入:[1,1,2,3,3,3,2,2,4,1] 输出:4要求:一次遍历,常数级的额外空间复杂度思路:把数组中所有的数字做异或,因为相同的两个数组异或结果为0,所以最后得到的数字就是结果。Java代码:public class Solution { /** *@param原创 2016-03-31 13:54:27 · 858 阅读 · 1 评论 -
Lintcode—落单的数II
落单的数II(Java)题目给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字。输入:[1,1,2,3,3,3,2,2,4,1]输出:4思路:按位计算。int型数字占32位,如果这个数字出现3次,则与这个数字对应的每一位上的1也出现三次。使用int型数组记录每一位上1出现的次数,能被3整除则表示出现3次。最后得到的就是要求的数字。Java代码:public clas原创 2016-03-31 14:13:40 · 1750 阅读 · 0 评论 -
Lintcode—跳跃游戏
跳跃游戏(Java)题目给出一个非负整数数组,你最初定位在数组的第一个位置。数组中的每个元素代表你在那个位置可以跳跃的最大长度。判断你是否能到达数组的最后一个位置。输入:[2,3,1,1,4]输出:true思路:从后往前遍历,给每一个位置设置一个标志位,表示能否通过这个位置到达终点。这个标志位的设置,由这个点能否通过排在它后面的点到达终点。有两种可能性:一种是从该点可以直接到达终点,另一种是通过排在原创 2016-03-31 14:44:09 · 3085 阅读 · 0 评论 -
Lintcode—落单的数III
落单的数III(Java)题目给出2*n + 2个的数字,除其中两个数字之外其他每个数字均出现两次,找到这两个数字。输入:[1,2,2,3,4,4,5,3]输出:1 5思路:首先将所有数字求异或,得到的数是两个落单的数字的异或。由于这两个数字肯定不同,则他们的异或一定有值1的位。找到第一个值为1的位,以这一位为标志,将数组中的数分为两组。一组是该位为1的数字,一组是该位为0的数字。对这两组数分别进行原创 2016-03-31 15:32:36 · 550 阅读 · 1 评论 -
蘑菇街2016暑期实习笔试编程题
爱情数字题目小王向小红表白,小红门口有一个大广告牌,小王想用v升油漆在广告牌是写下一个爱情数字,数字的值越大,表白成功的几率越高。小王知道小红不喜欢0这个数字,所以不会写这个数字。每个数字都有需要使用的油漆数量,求小王能写出的最大的数字。输入:5 5 4 3 2 1 2 3 4 5输出:55555思路:使用贪心算法。首先对每个数字按照需要使用的油漆数量(weight)、以及数字大小(value)进原创 2016-04-01 11:15:04 · 468 阅读 · 0 评论