Loading

剑指 Offer 03. 数组中重复的数字

原地交换(优解)

遍历数组,如果存在某个数不在0到n-1的范围内,返回-1。

每个数放到对应的位置上,即让 nums[i] = i

从前往后遍历数组中的所有数

  • 如果对应的值不等于所在地址的值,交换值到对应的地址上,即:nums[x] = x

时间复杂度分析
每次swap操作都会将一个数放在正确的位置上,最后一次swap会将两个数同时放到正确位置上,一共只有 nn 个数和 nn 个位置,所以swap最多会进行 n−1n−1 次。所以总时间复杂度是 O(n)O(n)。

posted @ 2021-12-17 21:02  Zhbeii  阅读(24)  评论(0)    收藏  举报