代皓 Blog

要么庸俗 要么孤独.

孩子们的游戏(圆圈中最后剩下的数)

约瑟夫环

题目 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。 其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那 个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数….这 样下...

翻转单词顺序列

题目 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看, 但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一 的翻转这些单词顺序可不在行,你能帮助他么? 分析 ...

数组中只出现一次的数字

题目 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 分析 这个题有一个要求就是时间复杂度是O(n),空间复杂度是O(1)。 如果没有这个要求,我们可以使用hashmap实现,循环一次,记录值和出现的次数,第二次循环找出出现一次的两个数。 既然这个方法行不通,就只有用新的方法。 磁盘里的存储都是成对出现的,现在磁盘损坏,丢失了...

扑克牌顺子

题目 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)…他随机从中抽出了5张牌, 想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…..LL不 高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12...

左旋转字符串

题目 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S, 请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! 分析 有一个字符串abcdefgh,要求左移三位。 我们先将字符串转换成数组,...

和为S的连续正数序列

题目 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100 (至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输出描述: 输出所有和为...

和为S的两个数

题目 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 分析 这个题目最容易想到的就是先固定一个数,然后将这个数分别和数组中的每个元素相加,符合要求的加入到list中,然后后移固定的这个数,再从数组开头一次和这个数相加 。这样是可以找出所有的复合要求的组合的。这个算法有两层嵌套,时间复杂度是O(n2...

第一个只出现一次的字符

题目 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置 分析 最容易想想到的就是从头开始取每一个字符,然后和后面的字符进行比较,加入比较到字符串尾,也没有找到相同的,这个就是第一个出现的字符。 分析这个思想的时间复杂度,n个长度的字符串,每一个字符都有可能和后面的字符相同,所以时间复杂度是O(n2)。 如...

数字在排序数组中出现的次数

统计一个数字在排序数组中出现的次数

题目 统计一个数字在排序数组中出现的次数 分析 这个解法可以用hashmap,一边遍历一遍记录出现的次数。 算法的时间复杂度是O(n)。 import java.util.HashMap; public class Solution { public int GetNumberOfK(int [] array , int k) { if(array ==...

把数组排成最小数

题目 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 分析 一般的思想是对这个数组进行全排列,然后拼接成整数,但是这样有一个问题就是如果用int表示,可能会产生溢出。 要解决这个问题就是将整数转化成字符串,然后根据相应的比较字符串的大小。 而比...