解法一

将原数组进行升序排列,然后模拟约瑟夫问题的过程,从小到大依次将值加入。

  1. import java.util.Arrays;
  2. class Solution {
  3. public int[] deckRevealedIncreasing(int[] deck) {
  4. int[] ans = new int[deck.length];
  5. Arrays.sort(deck);
  6. ans[0] = deck[0];
  7. int len = 1;
  8. int i = 1;
  9. int k = 0;
  10. while (len < deck.length) {
  11. if (ans[i] == 0) {
  12. k++;
  13. }
  14. if (k == 2) {
  15. ans[i] = deck[len];
  16. len++;
  17. k = 0;
  18. }
  19. i = (i + 1) % deck.length;
  20. }
  21. return ans;
  22. }
  23. }