杭州网站建设 seo,seo具体seo怎么优化,福州企业免费建站,马鞍山做网站的列表 arr 由在范围 [1, n] 中的所有整数组成#xff0c;并按严格递增排序。请你对 arr 应用下述算法#xff1a;从左到右#xff0c;删除第一个数字#xff0c;然后每隔一个数字删除一个#xff0c;直到到达列表末尾。重复上面的步骤#xff0c;但这次是从右到左。也就是…列表 arr 由在范围 [1, n] 中的所有整数组成并按严格递增排序。请你对 arr 应用下述算法从左到右删除第一个数字然后每隔一个数字删除一个直到到达列表末尾。重复上面的步骤但这次是从右到左。也就是删除最右侧的数字然后剩下的数字每隔一个删除一个。不断重复这两步从左到右和从右到左交替进行直到只剩下一个数字。给你整数 n 返回 arr 最后剩下的数字。 示例 1输入n 9输出6解释arr [1, 2, 3, 4, 5, 6, 7, 8, 9]arr [2, 4, 6, 8]arr [2, 6]arr [6]示例 2输入n 1输出1执行结果通过显示详情查看示例代码添加备注执行用时2 ms, 在所有 Java 提交中击败了70.42%的用户内存消耗40.8 MB, 在所有 Java 提交中击败了29.01%的用户通过测试用例3377 / 3377施展递归大法class Solution {public int lastRemaining(int n) {return ppp(1, n, 1, true); }/** * 构建等差集合 * param start 起点 * param end 终点 * param split 间隔 * param flag true 正向 false 反向 * return */ public int ppp(int start, int end, int split, boolean flag) {if (start end) {return start; }if (flag) {int nextSplit 2 * split; int nextStart start split; int nextEnd nextStart ((end - nextStart)/ nextSplit * nextSplit); return ppp(nextStart, nextEnd, nextSplit, !flag); } else {int nextSplit 2 * split; int nextEnd end - split; int nextStart nextEnd - ((nextEnd - start)/ nextSplit * nextSplit); return ppp(nextStart, nextEnd, nextSplit, !flag); } }}