14. 不修改数组找出重复的数字【难度: 一般 / 知识点: 抽屉原理 二分】
生活随笔
收集整理的這篇文章主要介紹了
14. 不修改数组找出重复的数字【难度: 一般 / 知识点: 抽屉原理 二分】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第一種方法: 開了map計數,多用了空間,map: logn,時間復雜度O(nlogn)
第二種方法: 抽屜原理,二分,時間復雜度O(nlogn)
class Solution { public:int duplicateInArray(vector<int>& nums) {int l=1,r=nums.size()-1;// 數的取值范圍while(l<r){int mid=l+r>>1;int s=0;for(int i=0;i<nums.size();i++) if(nums[i]>=l&&nums[i]<=mid) s++;if(s>mid-l+1) r=mid;//說明左邊多放了else l=mid+1;}return l;} };總結
以上是生活随笔為你收集整理的14. 不修改数组找出重复的数字【难度: 一般 / 知识点: 抽屉原理 二分】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1003 Emergency (25 分
- 下一篇: 1004 Counting Leaves