more katas
This commit is contained in:
25
Array Leaders (Array Series #3)/main.cpp
Normal file
25
Array Leaders (Array Series #3)/main.cpp
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#include <vector>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
vector<int> arrayLeaders(const vector<int>& numbers)
|
||||||
|
{
|
||||||
|
std::vector<int> result;
|
||||||
|
int sum = 0;
|
||||||
|
for(auto ptr = numbers.end()-1; ptr >= numbers.begin(); ptr--){
|
||||||
|
if(*ptr > sum)
|
||||||
|
result.insert(result.begin(), *ptr);
|
||||||
|
sum += *ptr;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
std::vector<int> temp;
|
||||||
|
std::vector<int> input = {17,5,3,4};
|
||||||
|
temp = arrayLeaders(input);
|
||||||
|
for(auto el: temp){
|
||||||
|
std::cout << el;
|
||||||
|
}
|
||||||
|
}
|
||||||
42
Counting Duplicates/main.cpp
Normal file
42
Counting Duplicates/main.cpp
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
#include <algorithm>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
|
size_t duplicateCount(const std::string& in); // helper for tests
|
||||||
|
|
||||||
|
std::string toLower(const char* input){
|
||||||
|
std::string temp = input;
|
||||||
|
std::transform(temp.begin(), temp.end(), temp.begin(), ::tolower);
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t duplicateCount(const char* in)
|
||||||
|
{
|
||||||
|
// Convert to lower chars
|
||||||
|
std::string input = toLower(in);
|
||||||
|
|
||||||
|
// Start counting for every char
|
||||||
|
std::map<char, int> my_map;
|
||||||
|
for(auto character: input){
|
||||||
|
auto it = my_map.find(character);
|
||||||
|
if(it != my_map.end()){
|
||||||
|
it->second += 1;
|
||||||
|
} else {
|
||||||
|
my_map[character] = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Count how often we have a value higher than 1
|
||||||
|
int count = 0;
|
||||||
|
for(auto it: my_map){
|
||||||
|
if(it.second > 1)
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
std::cout << duplicateCount("TESTtest");
|
||||||
|
}
|
||||||
22
Product Of Maximums Of Array (Array Series #2)/main.cpp
Normal file
22
Product Of Maximums Of Array (Array Series #2)/main.cpp
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
#include <vector>
|
||||||
|
#include <iostream>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
int maxProduct (vector<int>numbers , int sub_size)
|
||||||
|
{
|
||||||
|
// Sort numbers
|
||||||
|
std::sort(numbers.begin(), numbers.end());
|
||||||
|
int result = 1;
|
||||||
|
// Loop over last sub_size elements
|
||||||
|
for(auto ptr = numbers.end()-1; ptr >= numbers.end() - sub_size; ptr--){
|
||||||
|
result *= *ptr;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
std::vector<int> numbers = {1,2,3,4,5};
|
||||||
|
std::cout << maxProduct(numbers, 3);
|
||||||
|
}
|
||||||
16
Two Sum/main.cpp
Normal file
16
Two Sum/main.cpp
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
#include <utility>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
std::pair<std::size_t, std::size_t> two_sum(const std::vector<int>& numbers, int target) {
|
||||||
|
for(int i = 0; i<numbers.size(); i++){
|
||||||
|
for(int j = i; j<numbers.size(); j++){
|
||||||
|
if(numbers[i] + numbers[j] == target && i != j)
|
||||||
|
return {i, j};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {0, 0};
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user