4.4 Nested Iteration
How to iterate through with a time complexity of O(n^2)
for (int i = 1; i <= 3; i++) { // Outer loop
System.out.println("Outer loop iteration: " + i);
for (int j = 1; j <= 3; j++) { // Inner loop
System.out.println(" Inner loop iteration: " + j);
}
}
Outer loop iteration: 1
Inner loop iteration: 1
Inner loop iteration: 2
Inner loop iteration: 3
Outer loop iteration: 2
Inner loop iteration: 1
Inner loop iteration: 2
Inner loop iteration: 3
Outer loop iteration: 3
Inner loop iteration: 1
Inner loop iteration: 2
Inner loop iteration: 3
What is wrong with this code cell(Hack)
// //Hint: Check the Syntax and look at the equals to signs on the example above
// import java.util.Scanner;
// Scanner scanner = new Scanner(System.in);
// System.out.print("Enter the number of rows: ");
// int rows = scanner.nextInt();
// for (int i = rows; i>1; i-) {
// for (int j = 1; j <= i; j++) {
// System.out.print(j + " ");
// }
// System.out.println();
// }
// scanner.close();
for (int i = rows; i>1; i-)
. The decrement operator should be i--
not i-
.
for (int i = rows; i>1; i-)
. It should be i >= 1
and not i > 1
.
//Hint: Check the Syntax and look at the equals to signs on the example above
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the number of rows: \n");
int rows = scanner.nextInt();
for (int i = rows; i>=1; i--) {
for (int j = 1; j <= i; j++) {
System.out.print(j + " ");
}
System.out.println();
}
scanner.close();
Enter the number of rows:
1 2 3 4 5 6
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1
Sample input: 5
Sample Output 1 2 3 4 5 1 2 3 4 1 2 3 1 2 1
Answer here + One sentence Explanation
It prints 20 stars because the inner for loop prints 4 stars per each row and the outer for loop prints 5 rows of four stars each. 4 * 5 = 20
Answer here + One sentence Explanation
It will print out 6 rows of 5 stars each, because the inner for loop prints out 5 stars in the row and the outer for loop prints 6 rows of 5 stars each.
Video To watch later if you need more help
Cool Usecase of nested loops
public class PatternAndSpiral {
// Method to check if a number is prime
static boolean isPrime(int num) {
if (num <= 1) return false;
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) return false;
}
return true;
}
public static void main(String[] args) {
// Define the dimensions
int rows = 5;
// First loop to generate a diamond pattern
System.out.println("Diamond Pattern:");
for (int i = 1; i <= rows; i++) {
// Print spaces for left alignment
for (int j = i; j < rows; j++) {
System.out.print(" ");
}
// Print asterisks for the upper part of the diamond
for (int k = 1; k <= (2 * i - 1); k++) {
System.out.print("*");
}
System.out.println();
}
for (int i = rows - 1; i >= 1; i--) {
// Print spaces for right alignment
for (int j = rows; j > i; j--) {
System.out.print(" ");
}
// Print asterisks for the lower part of the diamond
for (int k = 1; k <= (2 * i - 1); k++) {
System.out.print("*");
}
System.out.println();
}
// Second loop: Magic Square (Latin Square)
System.out.println("\nMagic Square (Latin Square):");
int size = 4;
int[][] magicSquare = new int[size][size];
int num = 1, row = 0, col = size / 2;
while (num <= size * size) {
magicSquare[row][col] = num;
num++;
int newRow = (row - 1 + size) % size;
int newCol = (col + 1) % size;
if (magicSquare[newRow][newCol] != 0) {
row = (row + 1) % size;
} else {
row = newRow;
col = newCol;
}
}
// Print the magic square
for (int[] r : magicSquare) {
for (int c : r) {
System.out.print(c + "\t");
}
System.out.println();
}
// Third loop: Prime Number Spiral
System.out.println("\nPrime Number Spiral:");
int spiralSize = 5;
int[][] spiral = new int[spiralSize][spiralSize];
int val = 1, startRow = 0, endRow = spiralSize - 1, startCol = 0, endCol = spiralSize - 1;
while (startRow <= endRow && startCol <= endCol) {
// Fill top row
for (int i = startCol; i <= endCol; i++) {
spiral[startRow][i] = isPrime(val) ? val : 0;
val++;
}
startRow++;
// Fill right column
for (int i = startRow; i <= endRow; i++) {
spiral[i][endCol] = isPrime(val) ? val : 0;
val++;
}
endCol--;
// Fill bottom row
if (startRow <= endRow) {
for (int i = endCol; i >= startCol; i--) {
spiral[endRow][i] = isPrime(val) ? val : 0;
val++;
}
endRow--;
}
// Fill left column
if (startCol <= endCol) {
for (int i = endRow; i >= startRow; i--) {
spiral[i][startCol] = isPrime(val) ? val : 0;
val++;
}
startCol++;
}
}
// Print the spiral
for (int[] r : spiral) {
for (int c : r) {
System.out.print(c + "\t");
}
System.out.println();
}
}
}
PatternAndSpiral.main(null);
Diamond Pattern:
*
***
*****
*******
*********
*******
*****
***
*
Magic Square (Latin Square):
9 15 1 7
14 4 6 12
3 5 11 13
8 10 16 2
Prime Number Spiral:
0 2 3 0 5
0 17 0 19 0
0 0 0 0 7
0 23 0 0 0
13 0 11 0 0
2
15
15
Iteration: 0
Current Velocity: 2, 2