Created
December 30, 2015 15:33
-
-
Save mbuff24/5d24ffcf06c7ba7f82ae to your computer and use it in GitHub Desktop.
Java solution for Algorithmic Crush -- https://www.hackerrank.com/contests/w4/challenges/crush based on http://codereview.stackexchange.com/a/95812
This file contains hidden or 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
import java.io.*; | |
import java.util.*; | |
public class Solution { | |
static class Operation { | |
public int a; | |
public int b; | |
public int k; | |
public Operation(int a, int b, int k) { | |
this.a = a; | |
this.b = b; | |
this.k = k; | |
} | |
public String toString() { | |
return "[" + a + ", " + b + ", " + k + "]"; | |
} | |
} | |
public static long crush(int n, int m, Operation[] ops) { | |
long[] crushState = new long[n+1]; | |
for(int i=0; i < crushState.length; i++) { | |
crushState[i] = 0; | |
} | |
for(int i=0; i < m; i++) { | |
crushState[ops[i].a-1] += ops[i].k; | |
crushState[ops[i].b] -= ops[i].k; | |
} | |
long max = crushState[0]; | |
long sum = max; | |
for(int i=1; i < n; i++) { | |
sum += crushState[i]; | |
if(sum > max) { | |
max = sum; | |
} | |
} | |
return max; | |
} | |
public static void main(String[] args) { | |
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */ | |
/* https://www.hackerrank.com/contests/w4/challenges/crush */ | |
Scanner sc = new Scanner(System.in); | |
int n = sc.nextInt(); | |
int m = sc.nextInt(); | |
Operation[] ops = new Operation[m]; | |
for(int i=0; i < m; i++) { | |
int a = sc.nextInt(); | |
int b = sc.nextInt(); | |
int k = sc.nextInt(); | |
ops[i] = new Operation(a, b, k); | |
} | |
long max = crush(n, m, ops); | |
System.out.println(max); | |
} | |
} |
can someone explain the for loop
for(int i=0; i < m; i++) {
crushState[ops[i].a-1] += ops[i].k;
crushState[ops[i].b] -= ops[i].k;//this line preferably
| }
There is no need to populate crushState with zeroes, it is the default behavior.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I tried writing the solution and I wrote the below code:
import java.util.Scanner;
public class AlgorithmicCrush {
// System.out.println("Input the size of the list:");
int listSize = scanner.nextInt();
// System.out.println("Input the number of the operations to be performed:");
int numberOfOperations = scanner.nextInt();
// System.out.println("Enter the list of the numbers:");
for (i = 0; i < numberOfOperations; i++) {
a[i] = scanner.nextInt();
b[i] = scanner.nextInt();
k[i] = scanner.nextLong();
}
// System.out.println("Final Output is:" + temp);
System.out.println(temp);
}
Many of the test cases were passed but the remaining ones got timed out, can anyone please help with the issue in this code?
Note: I am pretty new to the coding, hence the above code might not be that optimized.