最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

找数组中重复的数字

来源:博客园


(资料图片)

问题:数组中重复的数字,且数值小于数字size-1

  1. 方法一:利用hash,遇到重复的数字时就返回
class Solution {public:    int findRepeatNumber(vector& nums) {        unordered_mapmp;        for(auto i : nums){            if(mp[i]) return i;            mp[i] = true;        }        return -1;    }};

方法二:利用字典的性质,因数值与索引是一一对应的关系,所以将数值进行交换,达到nums[i] == i ;当nums[ nums[i] ] == nums[i] 时,即为重复出现的数字,返回。不相等就交换,并且每交换一次,就会有一个索引号和数值对应好,直到当前的索引号也对应好,执行i++,

class Solution {public:    int findRepeatNumber(vector& nums) {        int i = 0;        while(i

方法三:先排序sort(nums.begin(),nums.end()); 再遍历一遍数组,比较相邻两个数值,遇到相等的即为重复的数值,返回。

关键词: 进行交换 一一对应