Merge Strings Alternately
给两个string, 返回一个string, 要求交替字符.
给两个string, 返回一个string, 要求交替字符.
给一个string, 定义nice是string的substring, 并且每个字符都有对应大小写的字符. 求最长nice substring. 这个题微软面试经常考啊, 帮人写过好几次了, 这题主要的陷阱就是看似能用滑窗扫描, 其实不能, 原因是nice的substring没有包含的关系, 所以最简单的做法就是2个for循环找所有可能的情况, 然后还有一种做法是, 先预处理string, 然后把不可能组成nice string的字符, 整个string都没有出现大小写的字符, 放到set里, 然后因为题意, 我们知道这些字符可以看做一个个split points. 也就是说我们的答案的substring肯定不会包含这些字符, 于是用一个循环找写着字符, 不断的剔去他们. 就可以找到答案了. 我看讨论区说这是什么分治法, 我觉得并不是. 只是简单的分割问题, 没有merge.
给一个2d数组, 里面1是对角线, -1是反对角线, 从每个column上往下放小球, 求小球落到哪里. 这个题里已经给出了什么时候小球不能落下的情况, 一个是碰壁, 一个是相邻的cell互为1和-1. 排除然后做dfs就可以了. 也不需要memo就能过.
给一个数组, 可以把其中一个数平方, 求这个数组可能的子数组的最大和. 这个和上个题好像差不多, 我用dp做的, 主要是要看出来转移方程,即, 因为只能做一次平方. 所以选择了当前的数做了平方后, 以后的数字不可以再做, 以后的数就是普通的子数组最大和.
给一个array, 求最大绝对值子数组的和是多少. 绝对值就是既要看最大和子数组, 也要看最小和(负数)子数组.
给三个数, a,b,c, 每次拿两个数并且-1, 算一分, 求最大能得多少分. 贪婪算法, 想下肯定是最多的两个堆拿的结果是最多的. 所以题目转化成从abc中不断找到最大的两个数.
要求设计一个队列, 给一个fetch方法, 把输入的第kth元素删除然后放到队列后边. 这个题hints提示了用sqrt桶..就用就行了.
给一个数组, 求里面所有只出现一次的数字的和.
给一个数组, 问这个数组在任意rotate后,是不是sorted, 数组里有重复元素. 这个题都check一下也能过, 然后如果做过以前的rotated sorted array就知道一个array rotate后, 也只会有一个峰值. 所以比较差值即可.
给一个string, 里面有0和1, 求最少替换(0->1 or 1->0)的位置的个数, 使得string变成0和1互相不相邻的string. 这个题想下就知道, 互相不相邻的string要不然是: 0101010101 要不然是1010101010. 所以只需要考虑2个情况即可.