虾皮4.6算法岗笔试 编程题目
虾皮笔试填空题说实话基本都不会,毕竟不是科班出身,这方面得补一补。代码过了2.8.
第一题 最小计算次数
对于给定的数x,y可以进行两种运算:
1.加一:(x ,y) -> (x + 1 ,y + 1)
2.乘二:(x ,y) -> (x * 2 ,y * 2)
问最少经过多少次运算可以得到targetX,targetY,不能运算成功的返回-1。
解题思路,这题过了80%,一开始先判断给定的两组数(source,target)的奇偶数或者大小,比如说target<source就肯定返回-1, source的X和Y如果都是偶数或奇数那么target也都是偶数或都是奇数等等。这个判断可以过个20%好像。
然后target 能除2的除,除不了再减1再除。
第二题 互斥字符串
字符串只有A或者B两个字符,如果字符串中相邻两个字符不同,则为互斥字符串。可以把某个字符变成另一个,问给定的字符串变为互斥字符串所需要的最少变换次数。
解题思路,这题100%,一开始想复杂了,后来想想发现只有两种可能,字符串要么A开头要么B开头,时间复杂度O(n)。
第三题 N皇后,力扣原题。100%