Last active
January 25, 2021 05:40
-
-
Save Shivamy2/b2092a87a730b2a7c13d3401bb5eed13 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// In Java | |
import java.util.*; | |
class Question1 { | |
// Please try not to change anything in this method. | |
public static void main(String[] args) { | |
int[] numbers = new int[15]; | |
addRandomNumbers(numbers); | |
System.out.println(Arrays.toString(numbers)); | |
System.out.println(findPairsByList(numbers, 10)); | |
System.out.println(findPairs(numbers, 10)); | |
} | |
// Please try not to change anything in this method. | |
public static void addRandomNumbers(int[] array) { | |
for (int i = 0; i < array.length; i++) { | |
array[i] = new Random().nextInt() % 10; | |
} | |
} | |
// Try to complete this method. | |
// By using string as type of list | |
public static List<String> findPairs(int[] numbers, int desiredSum) { | |
List<String> result = new ArrayList<>(); | |
String resultString = ""; | |
Arrays.sort(numbers); | |
int i = 0, j = numbers.length-1; | |
while (i < j) { | |
if ((numbers[i] + numbers[j]) == desiredSum) { | |
resultString += numbers[i] + " " + numbers[j]; | |
result.add(resultString); | |
resultString = ""; | |
i++; j--; | |
} | |
else if ((numbers[i] + numbers[j]) > desiredSum) j--; | |
else i++; | |
} | |
return result; | |
} | |
// By using list as a type of list instead of pair because I don't know javafx | |
public static List<List<Integer>> findPairsByList(int[] numbers, int desiredSum) { | |
List<List<Integer>> result = new ArrayList<>(); | |
Arrays.sort(numbers); | |
int i=0, j= numbers.length-1; | |
while(i<j) { | |
if((numbers[i] + numbers[j])== desiredSum) { | |
List<Integer> resultPairs = new ArrayList<>(); | |
result.add(resultPairs); | |
resultPairs.add(numbers[i]); | |
resultPairs.add(numbers[j]); | |
i++; j--; | |
} | |
else if((numbers[i] + numbers[j]) < desiredSum) i++; | |
else j--; | |
} | |
return result; | |
} | |
} | |
// In C++ | |
#include<bits/stdc++.h> | |
using namespace std; | |
int main() { | |
vector<int> v{5,3,6,4,1,7,8}; | |
int number = 9; | |
vector<pair<int,int>> result; | |
int i=0, j=v.size()-1; | |
sort(v.begin(),v.end()); | |
while(i<j) { | |
if((v[i]+v[j]) == number) { | |
result.push_back(make_pair(v[i],v[j])); | |
i++; | |
j--; | |
} | |
else if((v[i]+v[j]) > number) j--; | |
else i++; | |
} | |
for(auto item : result) cout << item.first << " " << item.second << endl; | |
return 0; | |
} |
#include<bits/stdc++.h>
using namespace std;
vector<pair<int, int>> findPairs(vector<int> v, int desiredSum);
int main() {
vector<int> v{5, 3, 6, 4, 1, 7, 8};
int desiredSum = 10;
vector<pair<int, int>> result = findPairs(v, desiredSum);
for (auto item : result) {
cout << "(" << item.first << ", " << item.second << ")" << endl;
}
return 0;
}
vector<pair<int, int>> findPairs(vector<int> v, int desiredSum) {
vector<pair<int, int>> result;
sort(v.begin(), v.end());
int leftIndex = 0;
int rightIndex = v.size() - 1;
while (leftIndex < rightIndex) {
int currentSum = v[leftIndex] + v[rightIndex];
if (currentSum == desiredSum) {
result.emplace_back(v[leftIndex], v[rightIndex]);
leftIndex++;
rightIndex--;
} else if (currentSum < desiredSum) {
leftIndex++;
} else {
rightIndex--;
}
}
return result;
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Java
Create a separate method for your C++ code