力扣(LeetCode)刷题,简单+中等题(第35期)

【摘要】 力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。
第1题:解码异或后的排列
试题要求如下:

回答(C语言):
/** * Note: The returned array must be malloced, assume caller calls free(). */int* decode(in…

力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。

第1题:解码异或后的排列

试题要求如下:

回答(C语言):


/**
* Note: The returned array must be malloced, assume caller calls free().
*/

int* decode(int* encoded, int encodedSize, int* returnSize) {
int n = encodedSize + 1;
int total = 0;
for (int i = 1; i <= n; i++) {
total ^= i;
}
int odd = 0;
for (int i = 1; i < n - 1; i += 2) {
odd ^= encoded[i];
}
int* perm = malloc(sizeof(int) * n);
*returnSize = n;
perm[0] = total ^ odd;
for (int i = 0; i < n - 1; i++) {
perm[i + 1] = perm[i] ^ encoded[i];
}
return perm;
}

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享