Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,8 @@ lint: lint/markdown lint/yaml lint/json test/styling test/static
format/json:
prettier --write ./algorithm-exercises-java/**/*.json

format/sources: # TODO: Implement source code formatting
@echo "NOT IMPLEMENTED YET"
format/sources:
$(GRADLE) --console=verbose spotlessApply

format: format/sources format/json

Expand Down
19 changes: 19 additions & 0 deletions algorithm-exercises-java/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,13 @@ plugins {
// Apply the application plugin to add support for building a CLI application in Java.
id 'application'
id 'checkstyle'
id 'org.openrewrite.rewrite' version '7.6.2'
id 'jacoco'
id 'org.barfuin.gradle.jacocolog' version '4.0.1'
id 'com.adarshr.test-logger' version '4.0.0'
id "org.sonarqube" version "7.2.2.6593"
id "com.github.ben-manes.versions" version "0.53.0"
id "com.diffplug.spotless" version "7.0.0"
}

repositories {
Expand All @@ -35,6 +37,7 @@ dependencies {
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.21'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.21.0'

rewrite 'org.openrewrite.recipe:rewrite-static-analysis:latest.release'
}

application {
Expand All @@ -55,6 +58,22 @@ checkstyle {
showViolations = true
}

spotless {
java {
target 'src/*/java/**/*.java'
googleJavaFormat('1.33.0')
removeUnusedImports()
trimTrailingWhitespace()
endWithNewline()
}
}

// Reference: https://docs.openrewrite.org/running-recipes/popular-recipe-guides/automatically-fix-checkstyle-violations
rewrite {
activeRecipe 'org.openrewrite.staticanalysis.CodeCleanup'
checkstyleConfigFile = file("checkstyle.xml")
}

configurations.checkstyle {
resolutionStrategy.capabilitiesResolution.withCapability("com.google.collections:google-collections") {
select("com.google.guava:guava:33.5.0-jre")
Expand Down
5 changes: 5 additions & 0 deletions algorithm-exercises-java/gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
org.gradle.jvmargs=--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \
--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \
--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED \
--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED \
--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
6 changes: 2 additions & 4 deletions algorithm-exercises-java/src/main/java/ae/Problem0000.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,7 @@ public class Problem0000 {

private Problem0000() {}

/**
* Problem template method.
*/
/** Problem template method. */
public static Integer problem0000() {
Integer result = null;

Expand All @@ -28,4 +26,4 @@ public static Integer problem0000() {
}
}

//CHECKSTYLE.ON: JavadocParagraph
// CHECKSTYLE.ON: JavadocParagraph
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,19 @@
import java.util.ArrayList;
import java.util.List;


/**
* Arrays Left Rotation.
*
* @link Problem definition [[docs/hackerrank/interview_preparation_kit/arrays/ctci_array_left_rotation.md]]
* @link Problem definition
* [[docs/hackerrank/interview_preparation_kit/arrays/ctci_array_left_rotation.md]]
*/
public class ArraysLeftRotation {

private ArraysLeftRotation() {}

static final int FIRST_POSITION = 0;

/**
* rotLeftOne.
*/
/** rotLeftOne. */
public static List<Integer> rotLeftOne(List<Integer> a) {
// Clone the list
List<Integer> output = new ArrayList<>(a);
Expand All @@ -29,9 +27,7 @@ public static List<Integer> rotLeftOne(List<Integer> a) {
return output;
}

/**
* rotLeft.
*/
/** rotLeft. */
public static List<Integer> rotLeft(List<Integer> a, int d) {

// Clone the list
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,23 @@
import java.util.Arrays;
import java.util.List;


/**
* Crush (Brute Force).
*
* @link Problem definition [[docs/hackerrank/interview_preparation_kit/arrays/crush.md]]
* @link Solution notes [[docs/hackerrank/interview_preparation_kit/arrays/crush_optimized-solution-notes.md]]
* @link Solution notes
* [[docs/hackerrank/interview_preparation_kit/arrays/crush_optimized-solution-notes.md]]
*/
public class CrushBruteForce {

private CrushBruteForce() {}

private static final int INITIALIZER = 0;

/**
* arrayManipulation.
*/
/** arrayManipulation. */
public static long arrayManipulation(int n, List<List<Integer>> queries) {
// why adding 1?
// first slot to adjust 1-based index and
// first slot to adjust 1-based index and
int[] result = new int[n + 1];
Arrays.fill(result, INITIALIZER);
int maximum = INITIALIZER;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,22 @@
import java.util.Arrays;
import java.util.List;


/**
* Crush (Optimized).
*
* @link Problem definition [[docs/hackerrank/interview_preparation_kit/arrays/crush.md]]
* @link Solution notes [[docs/hackerrank/interview_preparation_kit/arrays/crush_optimized-solution-notes.md]]
* @link Solution notes
* [[docs/hackerrank/interview_preparation_kit/arrays/crush_optimized-solution-notes.md]]
*/
public class CrushOptimized {

private CrushOptimized() {}

/**
* arrayManipulation.
*/
/** arrayManipulation. */
public static long arrayManipulation(int n, List<List<Integer>> queries) {
// why adding 2?
// first slot to adjust 1-based index and
// last slot for storing accumSum result
// first slot to adjust 1-based index and
// last slot for storing accumSum result
int[] result = new int[n + 2];
Arrays.fill(result, 0);
int maximum = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import java.util.stream.Collectors;
import java.util.stream.IntStream;


/**
* Crush (Optimized).
*
Expand All @@ -14,14 +13,10 @@ public class MinimumSwaps2 {

private MinimumSwaps2() {}

/**
* minimumSwaps.
*/
/** minimumSwaps. */
static int minimumSwaps(int[] arr) {
List<Integer> indexedGroup = IntStream.of(arr)
.boxed()
.map(t -> t - 1)
.collect(Collectors.toList());
List<Integer> indexedGroup =
IntStream.of(arr).boxed().map(t -> t - 1).collect(Collectors.toList());

int swaps = 0;
int index = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import java.util.List;


/**
* New Year Chaos.
*
Expand All @@ -15,10 +14,7 @@ private NewYearChaos() {}
static final String TOO_CHAOTIC_ERROR = "Too chaotic";
static final int NEW_YEAR_CHAOS_TOLERANCE = 2;


/**
* minimumBribesCalculate.
*/
/** minimumBribesCalculate. */
@SuppressWarnings("java:S6885")
public static Integer minimumBribesCalculate(List<Integer> q) {
int bribes = 0;
Expand All @@ -31,9 +27,8 @@ public static Integer minimumBribesCalculate(List<Integer> q) {
throw new IllegalStateException(TOO_CHAOTIC_ERROR);
}

List<Integer> fragment = q.subList(
Math.min(Math.max(value - NEW_YEAR_CHAOS_TOLERANCE, 0), i), i
);
List<Integer> fragment =
q.subList(Math.min(Math.max(value - NEW_YEAR_CHAOS_TOLERANCE, 0), i), i);

for (Integer k : fragment) {
if (k > value) {
Expand All @@ -46,9 +41,7 @@ public static Integer minimumBribesCalculate(List<Integer> q) {
return bribes;
}

/**
* minimumBribes.
*/
/** minimumBribes. */
public static String minimumBribesText(List<Integer> q) {
try {
Integer bribes = minimumBribesCalculate(q);
Expand All @@ -58,12 +51,9 @@ public static String minimumBribesText(List<Integer> q) {
}
}

/**
* minimumBribesText.
*/
/** minimumBribesText. */
@SuppressWarnings("java:S106")
public static void minimumBribes(List<Integer> q) {
System.out.println(minimumBribesText(q));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,12 @@
import java.util.stream.Collectors;

/**
* 2D Array - DS.
*
* @link Problem definition [[docs/hackerrank/interview_preparation_kit/arrays/2d_array.md]]
*/

* 2D Array - DS.
*
* @link Problem definition [[docs/hackerrank/interview_preparation_kit/arrays/2d_array.md]]
*/
public class TwoDarray {
private TwoDarray() { }
private TwoDarray() {}

private static List<Integer> getHourGlass(List<List<Integer>> arr, int positionX, int positionY) {
List<Integer> result = new ArrayList<>();
Expand All @@ -32,9 +31,7 @@ private static List<Integer> getHourGlass(List<List<Integer>> arr, int positionX
return result;
}

/**
* hourglassSum.
*/
/** hourglassSum. */
public static Integer hourglassSum(List<List<Integer>> arr) {
int matrixSize = 0;

Expand All @@ -52,8 +49,8 @@ public static Integer hourglassSum(List<List<Integer>> arr) {
for (int i = matrixStartIndex; i <= matrixEndIndex; i++) {
for (int j = matrixStartIndex; j <= matrixEndIndex; j++) {
List<Integer> currentHourGlass = getHourGlass(arr, i, j);
int hourGlassSum = currentHourGlass.stream()
.collect(Collectors.summingInt(Integer::intValue));
int hourGlassSum =
currentHourGlass.stream().collect(Collectors.summingInt(Integer::intValue));

if (maxHourGlassSum == null || hourGlassSum > maxHourGlassSum) {
maxHourGlassSum = hourGlassSum;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,14 @@
* CountTriplets.
*
* @link Problem definition
* [[docs/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count_triplets_1.md/]]
*
* [[docs/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count_triplets_1.md/]]
* @link Solution Notes
* [[docs/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count_triplets_1-solution-notes.md/]]
* [[docs/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count_triplets_1-solution-notes.md/]]
*/
public class CountTriplets {
private CountTriplets() {
}
private CountTriplets() {}

/**
* CountTriplets.
*/
/** CountTriplets. */
static long countTriplets(List<Long> arr, long r) {

Map<Long, Long> aCounter = new HashMap<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,13 @@
* CountTripletsBruteForce.
*
* @link Problem definition
* [[docs/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count_triplets_1.md/]]
*
* [[docs/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/count_triplets_1.md/]]
* @see CountTriplets
*/
public class CountTripletsBruteForce {
private CountTripletsBruteForce() {
}
private CountTripletsBruteForce() {}

/**
* CountTriples.
*/
/** CountTriples. */
static long countTriplets(List<Long> arr, long r) {

long size = arr.size();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,10 @@
* FrequencyQueries.
*
* @link Problem definition
* [[docs/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/frequency-queries.md]]
* [[docs/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/frequency-queries.md]]
*/
public class FrequencyQueries {
private FrequencyQueries() {
}
private FrequencyQueries() {}

private static final long __INITIAL__ = 1L;

Expand Down Expand Up @@ -102,9 +101,7 @@ static FrequencyQueries factory() {
return fq;
}

/**
* FrequencyQueries.
*/
/** FrequencyQueries. */
static List<Integer> freqQuery(List<List<Integer>> queries) {

FrequencyQueries fq = FrequencyQueries.factory();
Expand All @@ -126,8 +123,7 @@ static List<Integer> freqQuery(List<List<Integer>> queries) {
fq.select(value);
break;
default:
throw new IllegalArgumentException(
"Operation %d not supported".formatted(operation));
throw new IllegalArgumentException("Operation %d not supported".formatted(operation));
}
}

Expand Down
Loading
Loading