qweraaa level
获赞
342
粉丝
10
关注
5
看过 TA
3
山东大学
2019
Java
IP属地:未知
暂未填写个人简介
私信
关注
2018-05-21 17:45
山东大学 Java
简短的挂经,回馈牛客网 前两天面试头条试试水,菜鸡表示真难啊!! 一面跪(大概45m) 自我介绍 介绍项目 session和cookie的区别,mysql组合索引 上算法 1)(想到一半吧)说思路就好:给定一个函数,它完全随机地产生【1,3】范围内的整数(即每个数的产生机率都是1/3)。用给定的函数去求一个完全随机产生【1,89】范围内的整数函数。。。注意,要求每个数的出现的概率都相同。 2)(写出了O(n)的解法,通过)敲代码实现:给你一个字符串,里面只有小写字母...
BewareMyPower:第一题是个rand5生成rand7的经典题,关键在于若m>n,则randm()可以直接生成randn(),只要randm()生成1到n之间返回即可,生成的数大于n就重新调用。然后可以用(randm() - 1) * m + randm()来生成1到m^2的随机数。楼主用三进制的做法,此时命中率是(2*89)/(3^5)即178/243。其实也可以生成3^6=729以内的数,然后在8*89=712以内返回,结果对89求余后加1即可,命中率是712/729,只不过每次要多调用1次rand3()。如果要深抠命中率的话就太麻烦了。第二题好像在哪里看过原题,记录子串起始位置,整个迭代过程中子串保持不含重复字符的性质,每次不能保持该性质时比较下最大长度。写了下还是磕磕绊绊的,主要是之前命名太随意导致各种写错…… int longest_unique_substr_len(const std::string& s) { constexpr size_t kInitPos = -1; std::vector<size_t> hashmap(26, kInitPos); size_t low = 0; size_t maxlen = 0; for (size_t i = 0; i != s.size(); ++i) { size_t key = s[i] - 'a'; if (hashmap[key] != kInitPos && hashmap[key] >= low) { maxlen = std::max(maxlen, i - low); low = hashmap[key] + 1; } hashmap[key] = i; } return std::max(maxlen, s.size() - low); }
投递字节跳动等公司10个岗位 >
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务