网站群建设意见,线下营销方式主要有哪些,环球贸易网国际站,wordpress淘宝客知乎给定一个包含 n 1 个整数的数组 nums#xff0c;其数字都在 1 到 n 之间#xff08;包括 1 和 n#xff09;#xff0c;可知至少存在一个重复的整数。假设只有一个重复的整数#xff0c;找出这个重复的数。
示例 1:
输入: [1,3,4,2,2] 输出: 2
代码
class Solution {…给定一个包含 n 1 个整数的数组 nums其数字都在 1 到 n 之间包括 1 和 n可知至少存在一个重复的整数。假设只有一个重复的整数找出这个重复的数。
示例 1:
输入: [1,3,4,2,2] 输出: 2
代码
class Solution {public int findDuplicate(int[] nums) {int nnums.length,l1,rn-1;while (lr){int mid (l r1) 1;int count0;for(int num:nums)//统计小于mid数字出现的次数{if(nummid)count;}if(countmid)//如果小于mid数字出现的次数大于mid则小于mid的数字出现重复rmid-1;else lmid;}return l;}
}解题思路
和环形链表一样快慢指针快的每次两跳慢的一跳相遇的时候慢回起点快慢都变为每一次一跳入口就是重复元素
代码
class Solution {public int findDuplicate(int[] nums) {int s0,f0;do {snums[s];fnums[nums[f]];}while (s!f);s0;do {snums[s];fnums[f];}while (s!f);return s;}
}