|
|
-
-
- import java.util.LinkedList;
- import java.util.ArrayList;
-
- /*
- * SD2x Homework #1
- * Implement the methods below according to the specification in the assignment description.
- * Please be sure not to change the signature of any of the methods!
- */
-
- public class LinkedListUtils {
- public static void insertSorted(LinkedList<Integer> list, int value) {
-
- if( list == null ) { return; } // Terminate if the list is null
- if(list.size() == 0){
- list.add(value);
- return;
- }
-
- int pointer = 0;
-
- for(int i : list){
- if( i > value ){
- break;
- }
- pointer++;
- }
- if(pointer == list.size()){
- list.addLast(value);
- }else{
- list.add(pointer, value);
- }
- }
-
- public static int calcMinimum(ArrayList<String> list){ // Return the index of the minimum element on the Array
- int i, j ;
- for(i = 0; i < list.size(); i++){
- for(j = 0; j < list.size(); j++){
- if(j == i){
- continue;
- }
- if(list.get(i).compareTo(list.get(j)) > 0){
- break;
- }
- }
- if( j == list.size()){
- return i;
- }
- }
- return -1;
- }
-
- public static void removeMaximumValues(LinkedList<String> list, int N) {
-
- if( list == null ){ return; }
- if( N < 1 ) { return; }
- if( list.size() <= N ){ list.clear(); return; }
-
- ArrayList<String> maxElements = new ArrayList<String>(N);
-
- for(int i = 0; i < N; i++){
- maxElements.add(list.get(i));
- }
-
- int maxVal, diff;
- String str;
-
- for(int i = N; i < list.size(); i++){
- maxVal = 0;
- str = list.get(i);
- for(int j = 0; j < N; j++){
- diff = str.compareTo(maxElements.get(j));
- if(diff == 0){ // Break if string collision is detected
- maxVal = 0;
- break;
- }
- maxVal = diff > maxVal ? diff : maxVal;
- }
- if(maxVal > 0){
- maxElements.set(calcMinimum(maxElements), str);
- }
- }
- list.removeAll(maxElements); // Remove all occurences of the elements in array from LL
- }
-
- public static boolean containsSubsequence(LinkedList<Integer> one, LinkedList<Integer> two) {
- if( one == null || two == null ){ return false; }
- if( one.size() < two.size() || one.size() == 0 || two.size() == 0){ return false; }
- int j;
- for(int i = 0; i <= one.size() - two.size(); i++){
- if(one.get(i) != two.getFirst()){
- continue;
- }
- for(j = 1; j < two.size(); j++){
- if(one.get(i + j) != two.get(j)){
- break;
- }
- }
- if(j == two.size()){
- return true;
- }
- }
- return false;
- }
- }
|