高级农民
- 积分
- 2474
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2013-11-28
- 最后登录
- 1970-1-1
|
大概说下思路哈,也不知道ok不
用一个 boolean[] visited 数组来保存当前这个数是不是用过
然后用一个 PriorityQueue pq (min heap)来保存目前的最小的字符
一开始先添加k个字符
然后从 0 到 末尾循环
如果这个字符没被用过(visited[i] == false) 就放到 pq 里
判断 visited[i - k]
if true, 则 i-k 位置上的数必须得放
if false, 则从 pq 里找最小的放
|
|