From 0b543eb933e02401b46287d4cc48ba09e1782b5b Mon Sep 17 00:00:00 2001 From: Pranjal Date: Mon, 28 Aug 2017 08:58:42 +0530 Subject: [PATCH] Find All Duplicates in an Array --- FindAllDuplicatesInAnArray.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 FindAllDuplicatesInAnArray.cpp diff --git a/FindAllDuplicatesInAnArray.cpp b/FindAllDuplicatesInAnArray.cpp new file mode 100644 index 0000000..1893dea --- /dev/null +++ b/FindAllDuplicatesInAnArray.cpp @@ -0,0 +1,33 @@ +class Solution { +public: + void swap(int& a, int& b){ + int temp = a; + a = b; + b = temp; + } + + vector findDuplicates(vector& nums) { + int n = nums.size(), i = 0; + + while(i < n){ + while((nums[i]-1 != i) && (nums[i] != nums[nums[i]-1])){ + swap(nums[i], nums[nums[i]-1]); + } + i++; + } + + vector ans; + + for(int i = 0; i < n; i++){ + if(nums[i]-1 != i){ + ans.push_back(nums[i]); + } + } + + if(ans.size()){ + sort(ans.begin(), ans.end()); + } + + return ans; + } +};