JIAKAOBO

LeetCode

venmo
wechat

感谢赞助!

  • ㊗️
  • 大家
  • offer
  • 多多!

Problem

Given two integers n and k, construct a list answer that contains n different positive integers ranging from 1 to n and obeys the following requirement:

  • Suppose this list is answer=[a1,a2,a3,,an], then the list [|a1a2|,|a2a3|,|a3a4|,,|an1an|] has exactly k distinct integers.

Return the list answer. If there multiple valid answers, return any of them.

Example 1:

Input: n = 3, k = 1
Output: [1,2,3]
Explanation: The [1,2,3] has three different positive integers ranging from 1 to 3, and the [1,1] has exactly 1 distinct integer: 1

Example 2:

Input: n = 3, k = 2
Output: [1,3,2]
Explanation: The [1,3,2] has three different positive integers ranging from 1 to 3, and the [2,1] has exactly 2 distinct integers: 1 and 2.

Constraints:

  • 1<=k<n<=104

Code

5,4,3,2,1 k = 1
1,5,4,3,2 k = 2
5,1,4,3,2 k = 3
1,5,2,4,3 k = 4
class Solution {
    public int[] constructArray(int n, int k) {
        int[] res = new int[n];
        int left = 1;
        int right = n;

        for(int i = 0; i < n; i++){
            if(k % 2 == 0) {
                res[i] = left++; // right--
            } else {
                res[i] = right--; // left++
            }

            if(k > 1) k--;
        }

        return res;
    }
}