腾讯后台笔试
一共5道
第一道:
读取输入以后整理成数组,排序输出即可
第二道:
暴力模拟亲测可过
第三道:
O(n),从左到右遍历一遍即可,遍历过程中维护左边区间和右边区间的攻击和防守力量。另外注意数据类型防止溢出。
第四道:
我第四道暴力做的,不过也过了所有的测试样例了。首先我用map来维护元素之间的次序关系,然后根据这些次序关系恢复链表环。因为要求字典序最小,同时不含重复元素,只有两种可能,就是在最小的元素所在的位置划一刀,顺时针或者逆时针。比较一下顺时针的逆时针哪个字典序更小一些(就是比较最小元素旁边的两个元素),返回即可
第五道:
二维dp,dp[idx][stock_cnt] = money idx表示当前遍历到的价格序号,stock_cnt表示目前持有的股票数量,money表示目前有的现金数量
dp[idx+1][stock_cnt] = max(dp[idx][stock_cnt],dp[idx][stock_cnt-1]-stock_price,dp[idx][stock_cnt+1]+stock_price),注意下处理边界情况以及数据类型范围防止溢出和越界即可