flipper
BAN USER#include <stdio.h>
#include <stdlib.h>
int waterfilled(int arr[], int right[], int n) {
int i = 0, cum =0, min, left = arr[0];
printf("n: %d\n", n);
for (i = 1; i < n-1; ++i) {
if (arr[i] < left && arr[i] < right[i])
{
min = left < right[i] ? left : right[i];
cum += (min - arr[i]);
}
else
{
if (left < arr[i])
left = arr[i];
}
}
return cum;
}
int main(){
//int arr[] = {1,5,3,7,2,4};
int arr[] = {1,6,2,4,5,1,5};
int n = sizeof(arr)/sizeof(arr[0]);
int *right = calloc(sizeof(int), n);;
int i;
right[n-1] = arr[n-1];
for (i = n-2; i >= 0 ; --i) {
if (arr[i] < arr[i+1])
right[i] = arr[i+ 1];
else
right[i] = arr[i];
}
int res = waterfilled(arr, right, n);
printf("res: %d\n", res);
}
#include <stdio.h>
#include <stdlib.h>
int waterfilled(int arr[], int right[], int n) {
int i = 0, cum =0, min, left = arr[0];
printf("n: %d\n", n);
for (i = 1; i < n-1; ++i) {
if (arr[i] < left && arr[i] < right[i])
{
min = left < right[i] ? left : right[i];
cum += (min - arr[i]);
}
else
{
if (left < arr[i])
left = arr[i];
}
}
return cum;
}
int main(){
//int arr[] = {1,5,3,7,2,4};
int arr[] = {1,6,2,4,5,1,5};
int n = sizeof(arr)/sizeof(arr[0]);
int *right = calloc(sizeof(int), n);;
int i;
right[n-1] = arr[n-1];
for (i = n-2; i >= 0 ; --i) {
if (arr[i] < arr[i+1])
right[i] = arr[i+ 1];
else
right[i] = arr[i];
}
int res = waterfilled(arr, right, n);
printf("res: %d\n", res);
}
execution of initialization list happens from left to right.
If we have 3 list argument like,
class B : public A {
int b, c;
public:
B(int x): b(x), c (++b), A(b++) {
printf("ctor of class B: %d\n", b, c);
}
}
First A(++b) will get called!, as it is base class constructor, then rest of the argument list will get called from left to right, i.e. b(x), then c(++b).
If we do not pass A(++b) in argument list of B(), then default constructor will be passed.
#include<stdio.h>
#include<stdlib.h>
void string_expansion(char* str) {
if (!str) return;
char * tmp = (char*) malloc(strlen(str)+1);
int i = 0, j =0;
for (i = 0; i < strlen(str); i+=2)
{
int idx = *(str+i+1) - '0';
while(idx--) {
tmp[j++] = *(str+i);
}
}
tmp[j] = '\0';
strcpy(str,tmp);
free(tmp);
}
main() {
char str[10] = "a2b3c4";
string_expansion(str);
printf("str: %s\n", str);
getchar();
}
void PrintRange(struct tNode *root, int min, int max){
if (root == NULL)
return;
else if (min <= root->data && root->data <= max) {
PrintRange(root->left, min, max);
printf("root->data: %d \t", root->data);
PrintRange(root->right, min, max);
}
else if (root->data < min)
{
if (root->right)
PrintRange(root->right, min, max);
else
printf("no element in range \n");
}
else if (root->data > max) {
if (root->left)
PrintRange(root->left, min, max);
else
printf("no element in range \n");
}
}
RepGayle L McDowell, CEO at CareerCup
Gayle Laakmann McDowell is the founder / CEO of CareerCup, which provides programming interview prep for candidates interviewing with Microsoft, Google ...
- flipper February 05, 2016