Posts

Showing posts with the label Array

Majority Elements in an Array | Moore's Voting Algorithm | Element appears more than Array.length/2

class MostVotedElement { public static int boyerMooreMaxVoting(int[] array) { int maxVotedElement = array[0]; int count = 1; for(int i = 0; i array.length/2 ? count : -1; // it will find count if element's // frequency is more than array.length/2. 2 Can be any number 3, 4 etc } public static void main(String args[]){ int[] array = new int[] {2, 3, 4, 3, 3}; int value = boyerMooreMaxVoting(array); String result = value == -1 ? "There is no max voted element" : "The max voted element is " + value; System.out.println(result); } } Output The max voted element is 3

Special Matrix

Image
 1. Diagonal Matrix :   For this matrix M[row, column] = 0 for all row != column We can store non zero elements in one dimensional array to avoid storing zeros  2. Lower Triangular Matrix :  M[row, column] = 0 for all row < column M[row, column] = non-zero for all row >= column Non zero element count = 1 + 2 + 3 + ..... n = n(n+1)/2 Zero element count = n^2 - n(n+1)/2 = n(n-1)/2 Row Major Formula Column Major Formula 3. Upper Triangular Matrix M[row, column] = 0 for all row > column M[row, column] = non-zero for all row <= column Non zero element count  = 1 + 2 + 3 + ..... n =  n(n+1)/2 Zero element count  = n^2 - n(n+1)/2 =  n(n-1)/2 4. Symmetric Matrix M[row, column] is Symmetric matrix if M[row, column] = M[column, row] To represent it we can either use Lower Triangular Matrix or Upper Triangular Matrix. 5. Tridiagonal Matrix Total number of elements = n + n-1 + n-1 = 3n - 2 Calculate index when represented in 1 D array   6. ...

Find a pair of elements with sum k (a+b=k) in unsorted array

 class FindAPairWithSumK {     static int[] array;     // Time complexity : O(n^2). Assuming +ve numbers     // n-1 + n-2 + n-3 + .......+ 3 + 2 + 1 = n*(n-1)/2 = (n^2-n)/2 = n^2     static void findPair_bruteForce(int k) {         for(int i = 0; i < array.length-1; i++) {             for(int j = i+1; j < array.length; j++) {                 if(array[i] + array[j] == k) {                     System.out.println("Found pair (" + array[i] + ", " + array[j] + ")");                 }             }         }     }     static void findPair_dp(int k) {         int largest = getMax();         int[] dp = new int[largest + 1];         for(int ...

Find duplicates unsorted array

 class PrintDuplicateAndCounts {     static int[] array;     static int smallest = -1;     static int largest = -1;          // Time complexity : O(n^2). Assuming +ve numbers     static void printDuplicates() {         int count;         for(int i = 0; i < array.length-1; i++) {             if(array[i] > -1) {                 count = 1;                 for(int j = i+1; j < array.length; j++) {                     if(array[i] == array[j]) {                         count++;                         array[j] = -1;                     }     ...

Find duplicates and count in sorted array

// Time complexity : O(n) class PrintDuplicateAndCounts {     static void printDuplicates(int[] array) {         for(int i = 0; i < array.length - 1; i++) {             if(array[i] == array[i+1]) {                 // duplicate found                 int j = i + 1;                 while(array[i] == array[j]) {                     // continue iterating array to count all duplicates of this perticular element                     j++;                 }                 System.out.println(array[i] + " appeared " + (j-i) + " times");                 i = j - 1;           ...

Find multiple missing elements unsorted in an unsorted array

class FindMultpleMissingElementsInAnArray {     int[] array;     boolean present[];     int low;     int high;     void printMissingElements() {         // Corner case          if(array.length == 0) {             System.out.println("Array is empty");         }           findLowAndHighElements();         createAndPopulateBooleanArray();                  for(int i = 0; i < present.length; i++) {             if(present[i] == false) {                 int missingElement = low + i;                 System.out.println("Missing element is : " + missingElement);             }         }     }...

Find multiple missing elements in sorted an array

class FindMultpleMissingElementsInAnArray {     static int getMissingElement(int[] array) {         // Corner case          if(array.length == 0) {             System.out.println("Array is empty");             return -1;         }         int sum = 0;          for(int i = 0; i < array.length; i++) {             sum += array[i];         }         int n = array[array.length - 1]; // last element in list         int sumOfNNaturalNumbers = n*(n+1)/2;         return sumOfNNaturalNumbers - sum;     }     static void printMissingElements(int[] array) {         // Corner case          if(array.length == 0) {           ...

Find single missing element in sorted an array

class FindSingleMissingElementInAnArray {     static int getMissingElement(int[] array) {         // Corner case          if(array.length == 0) {             System.out.println("Array is empty");             return -1;         }         int sum = 0;          for(int i = 0; i < array.length; i++) {             sum += array[i];         }         int n = array[array.length - 1]; // last element in list         int sumOfNNaturalNumbers = n*(n+1)/2;         return sumOfNNaturalNumbers - sum;     }     static void getMissingElement2(int[] array) {         // Corner case          if(array.length == 0) {           ...

Array Operation

class ArrayOperations {     int[] array;     static int size;     void swap(int a, int b) {         array[a] = array[a] + array[b];         array[b] = array[a] - array[b];         array[a] = array[a] - array[b];     }     void displayArray() {         Arrays.stream(array).forEach(num -> System.out.print(num + " "));         System.out.println();     }     void displaySortedArray() {         for(int i = 0; i <= size; i++) {             System.out.print(array[i] + " ");         }         System.out.println();     }     int get(int index) {         if(index >= 0 && index < array.length) {             return array[index];       ...