题目:
解法1:看题意遍历数组
class Solution{
public int[] buildArray(int[] nums) {
int[] ans = new int[nums.length];
for (int i = 0; i < nums.length; i++) {
ans[i] = nums[nums[i]];
}
return ans;
}
解法2:由题意可知,nums[i]的范围在0-999,所以我们很自然的可以想到让算出来的答案乘1000然后加到nums[i]上去,这样nums[i]的前三位就是答案,后三位就是原数。
代码:
class Solution{
public int[] buildArray(int[] nums) {
for (int i = 0; i < nums.length; i++) {
nums[i] += 1000 * (nums[nums[i]] % 1000);
}
for (int i = 0; i < nums.length; i++) {
nums[i] /= 1000;
}
return nums;
}
}