Compare commits
3
Commits
main
...
b754df02ed
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b754df02ed | ||
|
|
9c2990038d | ||
|
|
f15ca18ad2 |
Generated
+1
@@ -0,0 +1 @@
|
||||
MainExercises.java
|
||||
@@ -1,3 +1,5 @@
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class MainExercises
|
||||
{
|
||||
/*
|
||||
@@ -19,10 +21,18 @@ public class MainExercises
|
||||
the output has to be a two-dimensional array of characters, so don't just print the triangle!
|
||||
*/
|
||||
public char[][] generateTriangle(int n) {
|
||||
char[][] triangle = new char[n][];
|
||||
for(int i = 0; i < n; i++) {
|
||||
triangle[i] = new char[i+1];
|
||||
for(int j = 0; j <= i; j++){
|
||||
if(j == 0 || i == n - 1 || i == j)
|
||||
triangle[i][j] = '*';
|
||||
else
|
||||
triangle[i][j] = ' ';
|
||||
}
|
||||
}
|
||||
|
||||
// todo
|
||||
return null;
|
||||
|
||||
return triangle;
|
||||
}
|
||||
|
||||
|
||||
@@ -58,9 +68,37 @@ public class MainExercises
|
||||
- Number of columns: matrix[0].length (if rectangular)
|
||||
*/
|
||||
public int[] spiralTraversal(int[][] matrix) {
|
||||
// todo
|
||||
return null;
|
||||
int rows = matrix.length;
|
||||
int cols = matrix[0].length;
|
||||
int[] result = new int[rows * cols];
|
||||
int index = 0;
|
||||
int top = 0, bottom = rows - 1;
|
||||
int left = 0, right = cols - 1;
|
||||
while (top <= bottom && left <= right) {
|
||||
for (int j = left; j <= right; j++) {
|
||||
result[index++] = matrix[top][j];
|
||||
}
|
||||
top++;
|
||||
for (int i = top; i <= bottom; i++) {
|
||||
result[index++] = matrix[i][right];
|
||||
}
|
||||
right--;
|
||||
if (top <= bottom) {
|
||||
for (int j = right; j >= left; j--) {
|
||||
result[index++] = matrix[bottom][j];
|
||||
}
|
||||
bottom--;
|
||||
}
|
||||
if (left <= right) {
|
||||
for (int i = bottom; i >= top; i--) {
|
||||
result[index++] = matrix[i][left];
|
||||
}
|
||||
left++;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
integer partitioning is a combinatorics problem in discreet maths
|
||||
@@ -89,15 +127,44 @@ public class MainExercises
|
||||
If you're familiar with Lists and ArrayLists, you can also edit the method's
|
||||
body to use them instead of arrays.
|
||||
*/
|
||||
|
||||
private ArrayList<ArrayList<Integer>> intPartitionsHelper(int n, int biggest) {
|
||||
ArrayList<ArrayList<Integer>> result = new ArrayList<>();
|
||||
if (n == 0) {
|
||||
result.add(new ArrayList<>());
|
||||
return result;
|
||||
}
|
||||
for (int k = 1; k <= Math.min(biggest, n); k++) {
|
||||
ArrayList<ArrayList<Integer>> subPartitions = intPartitionsHelper(n - k, k);
|
||||
for (ArrayList<Integer> subPartition : subPartitions) {
|
||||
ArrayList<Integer> newPartition = new ArrayList<>();
|
||||
newPartition.add(k);
|
||||
newPartition.addAll(subPartition);
|
||||
result.add(newPartition);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
public int[][] intPartitions(int n) {
|
||||
// todo
|
||||
return null;
|
||||
ArrayList<ArrayList<Integer>> answerList = intPartitionsHelper(n, n);
|
||||
int[][] answerArray = new int[answerList.size()][];
|
||||
for(int i = 0; i < answerList.size(); i++){
|
||||
answerArray[(answerList.size() - i) - 1] = new int[answerList.get(i).size()];
|
||||
for(int j = 0; j < answerList.get(i).size(); j++){
|
||||
answerArray[(answerList.size() - i) - 1][j] = answerList.get(i).get(j);
|
||||
}
|
||||
}
|
||||
return answerArray;
|
||||
}
|
||||
|
||||
|
||||
public static void main()
|
||||
public void main()
|
||||
{
|
||||
|
||||
int n = 4;
|
||||
int[][] partitions = intPartitions(n);
|
||||
for (int i = 0; i < partitions.length; i++) {
|
||||
for(int j = 0; j < partitions[i].length; j++)
|
||||
System.out.print(partitions[i][j]);
|
||||
System.out.println();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user