class Solution { public: vector<int> findErrorNums(vector<int>& nums) { // 核心思想是这样的: // 假设每个人各司其职, 那么每个岗位上就是相应的人员,并且各司其职, 但是现在混入了一个 // 闲杂人等, 他又害怕被人发现, 于是他就别人的岗位上站着, 结果等着等着, 这个岗位上应该来的人来了, // 他一看, 自己掩饰不过去了(毕竟人家不会跑到别的岗位上,抢别人的活干, 于是他就这么一直碰运气, // 一直走到那个没来上岗的那个人的岗位上去, 这样谁都不会发现他是的闲杂人等.而且每个岗位上都满员了. vector<int> ans; for (int i = 0; i < nums.size(); i++) { // 第一个人 应该在0位置上,因为数组下标是从0开始的,我也很无奈, // 岗位 1 2 3 4 5 6 // 下标 0 1 2 3 4 5 // 这样子是正常情况 while (nums[i] != nums[nums[i]-1]) { swap(nums[i], nums[nums[i]-1]); } } for (int i = 0; i < nums.size(); i++) { if (nums[i] != i+1) { return {nums[i], i+1}; } } return ans; } };
leetcode645. 错误的集合
猜你喜欢
转载自blog.csdn.net/weixin_36149892/article/details/80271237
今日推荐
周排行